1. 程式人生 > >git reset 應用場景示例

git reset 應用場景示例

今天使用eclipse的git外掛進行程式碼合併時,又出現了匪夷所思的事:

我本地commit後,pull遠端倉庫,merge過程中不知道出現什麼錯誤,導致我當時的本地倉庫處於merging狀態,程式碼一部分更新了,一部分沒更新。由於更新的程式碼量比較大,一點一點區分過於困難,一度不知所措。

後來經git大神一句指點,直接把我local還原到HEAD,嘗試重新pull就可以了,也就是使用 git reset --hard HEAD,把 本地倉庫回滾到最後一個commit狀態

同時這件事也再次說明,在合作開發過程中,隨時commit是一個好習慣,最好是每開發完一個小功能點就commit一次。

最後,再總結一下git reset的其他常用應用場景:

回滾add操作:

RT。

回滾最近幾次commit:

git reset --hard HEAD~2:回滾最近兩次
git reset --hard HEAD~n:回滾最近n次

回滾pull:

如果你從遠端倉庫pull下來的程式碼跟本地產生很多衝突,而你又暫時不想解決這些衝突,可以使用 git reset --hard ORIG_HEAD 回滾這次操作,前提是你pull之前已經commit過,不然這次回滾會把你最後一次commit後又更改的程式碼丟棄,原因上面說過,該命令是回到上一次commit狀態,如果pull之前沒有commit,請看下一個場景。

在沒有commit的情況下回滾pull:

如果你本地更改了程式碼,但是知道這次pull不會跟自己的更改有衝突,於是你先pull了,然後又TM後悔了,想回滾,此時請使用git reset --merge ORIG_HEAD,把–hard換成–merge就可以保留你之前的那些更改。