轉載自:http://www.kuqin.com/managetool/20111119/315043.htmlhtml
如何恢復舊版本
這是git入門命令中最複雜的了。由於它須要分狀況考慮,並且仍是一個遞歸的過程。
先複習一下git的Action和狀態:
Change <–(staging)–> Staged <– (commiting) –> Commited
如上,括號中是Action,其餘部分是狀態,狀態之間能夠經過Action一步一步的轉換!注意個人話:一步一步,好比咱們想從Commit到Change,必須先到Stage,再到Change!
下面回到正題,如何恢復版本呢?分狀況討論:
(1)處於Change狀態(尚未staging)
這是最簡單的狀況,git根本不知道你改動了文件,咱們用checkout命令。即直接從最新的commit版本中調出最新的文件版本。
若是省略文件名,就把整個文件夾的文件都恢復到上一次commit的狀態了哦,慎用!
1
2
3
4
5
6
7
#尚未Staging的狀況
#恢復a文件
git checkout a
#恢復全部文件
git checkout
(2)處於Staged狀態(已經Staging,尚未Commiting)
這時,git已經知道你的哪些文件變更了,必須用兩步才能恢復!
先reset再checkout
1
2
3
4
5
6
7
8
9
#已經Staging,但尚未Commit的狀況
#兩步走!
git reset HEAD a
git checkout agit
其實也能夠一步搞定:git checkout HEAD a
#省略文件名,就是git下全部文件一塊兒恢復啦慎用!
git reset HEAD
git checkout
(3)已經commit狀態
commit都寫入了,這是最麻煩的。。。
咱們只能用revert命令恢復到前面的版本,可是它可能會致使衝突!個人笨方法就是……直接查版本記錄,複製、粘貼吧親~
1
2
#xxxx是前面的版本
git revert xxxxide