1. 程式人生 > >git 程式碼回滾

git 程式碼回滾

導讀:合併程式碼時,在解決衝突的時候不小心多刪除了一點程式碼或者是發現提交的程式碼有錯誤,導致合併後的程式碼無法執行,一直報錯,不得不進行程式碼回滾操作。

基本步驟:

1cd+指定路徑
2、git log

拿到你之前提交的歷史,第一行的是一串40位的十六進位制數字組成的commit id。
按q退出列表

3、git reset --hard HEAD(HEAD是指你需要的commit id,取前七位即可,例76f5161)

注意:這個是在你的程式碼未提交到遠端倉庫時操作的,因為reset會將你指定的HEAD後的所有commit刪除,這樣可能會造成新的程式碼丟失)

如果你的程式碼已經進行了遠端提交,則進行下面的操作:

git checkout HEAD(HEAD是指你需要的commit id,取前七位即可,例76f5161)

4、這樣程式碼就可以回退到指定的某次提交了(本地)

5、如果想繼續將程式碼提交到遠端,在提交過程中,有可能會出現pull失敗,也無法push,提示是:

You are not currently on a branch, so I cannot use any 'branch <branchname>.merge' in your configuration file.
Please specify which remote branch you want to
use on the command line and try again (e.g. 'git pull <repository> <refspec>'). See git-pull(1) for details.

這是因為git checkout HEAD 是使HEAD頭指標指向了一個具體的commit id,而不是一個分支,此時處於“分離頭指標”模式,上面的提示告訴你“你不在任何分支上”,所以在新增新的提交時應建立一個新的分支

解決方法:
(1)git checkout -b temp (建立並切換temp分支)
(2)git checkout master (切換到你指定的分支上)

6、進行正常的程式碼遠端提交操作

這樣就完成了程式碼版本回退並正確提交的工作。

參考:http://www.cnblogs.com/houpeiyong/p/5890748.html