我最近向分支的頭部提交了一個文件,該文件中有錯誤。我需要做下面的事情:Git:檢出以前提交的文件並將其修改爲HEAD
- 獲取從一個文件提交之前的HEAD
- 提交該文件回HEAD
什麼的去了解,最好的方法是什麼?
我最近向分支的頭部提交了一個文件,該文件中有錯誤。我需要做下面的事情:Git:檢出以前提交的文件並將其修改爲HEAD
什麼的去了解,最好的方法是什麼?
你自己實際上是說:
首先得到該文件重新從一個提交前:
$> git checkout HEAD~1 path/to/file.ext
然後將其提交:
$> git commit -a -m 'Retrieved file from older revision'
如果僅僅是更改該文件如果出現在上次提交中,您甚至可以使用git-revert
:
$> git revert HEAD
我認爲最好讓它成爲一個單獨的提交,因爲它可以準確地告訴你你已經恢復了什麼,以及爲什麼。但是,通過使用--amend
切換到git-commit
,可以將其壓縮到之前的提交中。
--amend將是一個開關git提交,而不是git add – bdonlan 2009-05-23 01:38:22
要當心,在這種情況下:
Commit hash - File modified
aaaaaaa index.php
bbbbbbb test.php
ccccccc index.php
的Git結賬HEAD〜1(或HEAD ^)的index.php嘗試籤index.php文件到以前的頭部hash(BBBBBBB),但是這不是真正的以前的提交散列文件是ccccccc。在前面的HEAD哈希中,index.php仍然保持不變,因爲最後一次更改是在哈希ccccccc中進行的。
要恢復一些文件上一次提交的哈希受影響的文件,使用:
git log -n 2 --pretty=format:%h path/to/file.ext
忽略的第一個散列,然後在第二哈希值,則:
git checkout <second_hash> path/to/file.ext
git commit -m 'Revert this file to real previous commit'
最簡單的將是複製文件內容從特定的提交使用ui客戶端(或從github bitbucket等),並將其粘貼到當前文件並提交:)比編寫散列和路徑更容易 – nawfal 2014-01-07 10:48:00