在使用SourceTree的時(shí)候經(jīng)常會(huì)遇見(jiàn)超前一個(gè)版本工窍,落后N個(gè)版本的情況割卖,遇見(jiàn)這種情況應(yīng)該怎么辦呢?
首先打開(kāi)終端患雏,最好是從SourceTree里面打開(kāi)鹏溯,菜單欄有個(gè)終端按鈕。
然后輸入:
$ git reset --hard HEAD^
這句話的意思是將自己最近的一次提交撤銷淹仑,回到push之前的狀態(tài)丙挽。但是所有commit的內(nèi)容就都消失了。非常不建議用這個(gè)參數(shù)匀借,會(huì)犧牲太多的代碼颜阐。。
如果不想讓commit消失怀吻,可以改一下參數(shù)瞬浓。用這個(gè)參數(shù)可以保證你提交的代碼原封不動(dòng)的保存下來(lái)。前提是你本地的工作臺(tái)是干凈的蓬坡。如果不是請(qǐng)把所有代碼都暫存猿棉。
$ git reset --soft HEAD^
執(zhí)行這句話之后重新拉取一遍代碼就可以了,push的都會(huì)撤銷回來(lái)屑咳。
如果想一次回退多個(gè)push萨赁,可以這樣:(例子是撤銷最近三次的提交)
$ git reset --soft HEAD~3
如果想回退到某個(gè)指定版本,在終端中輸入:
$ git reset --soft 1234567
1234567是要回退到的版本號(hào)兆龙,根據(jù)具體情況而定杖爽,這里只是舉例子。
版本號(hào)可以不寫(xiě)全紫皇,前幾位就可以了慰安,Git會(huì)自動(dòng)去找。當(dāng)然也不能只寫(xiě)前一兩位聪铺,因?yàn)間it可能會(huì)找到多個(gè)版本號(hào)化焕,就無(wú)法確定是哪一個(gè)了。
最后總結(jié)一下:
- HEAD指向的版本就是當(dāng)前版本铃剔,因此撒桨,Git允許我們?cè)诎姹镜臍v史之間穿梭,使用命令git reset --hard commit_id键兜。
- 穿梭前凤类,用git log可以查看提交歷史,以便確定要回退到哪個(gè)版本普气。
- 要重返未來(lái)谜疤,用git reflog查看命令歷史,以便確定要回到未來(lái)的哪個(gè)版本。