在使用SourceTree的時候經常會遇見超前一個版本,落后N個版本的情況,遇見這種情況應該怎么辦呢?
首先打開終端,最好是從SourceTree里面打開,菜單欄有個終端按鈕。
然后輸入:
$ git reset --hard HEAD^
這句話的意思是將自己最近的一次提交撤銷,回到push之前的狀態。但是所有commit的內容就都消失了。非常不建議用這個參數,會犧牲太多的代碼。。
如果不想讓commit消失,可以改一下參數。用這個參數可以保證你提交的代碼原封不動的保存下來。前提是你本地的工作台是干凈的。如果不是請把所有代碼都暫存。
$ git reset --soft HEAD^
執行這句話之后重新拉取一遍代碼就可以了,push的都會撤銷回來。
如果想一次回退多個push,可以這樣:(例子是撤銷最近三次的提交)
$ git reset --soft HEAD~3
如果想回退到某個指定版本,在終端中輸入:
$ git reset --soft 1234567
1234567是要回退到的版本號,根據具體情況而定,這里只是舉例子。
版本號可以不寫全,前幾位就可以了,Git會自動去找。當然也不能只寫前一兩位,因為Git可能會找到多個版本號,就無法確定是哪一個了。
最后總結一下:
-
HEAD
指向的版本就是當前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id
。 -
穿梭前,用
git log
可以查看提交歷史,以便確定要回退到哪個版本。 -
要重返未來,用
git reflog
查看命令歷史,以便確定要回到未來的哪個版本。 -