沖突的解決
(如果git使用不熟練)建議在push不了時,pull之前。在本地創建一個新的分支並commit到local,以保證本地有commit記錄,萬一出什么問題,可以找回代碼,以免代碼丟失。
(更甚者,把整個文件夾備份,不然出現找不回代碼那就開心了)
演示
項目中有一個文件test.txt,其內容為(以下是在github倉庫中截得文件內容):
1、保證項目的正確性,先pull到最新版本。
2、修改local的test.txt的文件內容,修改后的內容是:
然后local查看狀態,及commit到本地倉庫。
3、 (再1之后),修改test.txt,並push到remote。
(以下是我直接在github的倉庫編輯提交的。)
查看remote的commit log,可以發現有一次新的提交。
這樣就造成了沖突,因為local的test.txt版本與服務器的版本不一致。
4、push本地的commit,發現無法push。
發現需要先 git pull,於是先更新。
pull后,給出了明確的錯誤提示”Automatic merge failed; fix conflicts and then commit the result.”。
此時查看test.txt的內容:
其中<<<<<<< HEAD 到 ======= 中間的內容是local提交的。
======= 到 >>>>>>> commit-id 是遠程倉庫中的內容。
(和svn類似。)
如何解決沖突? 刪除這些注釋,保證test.txt的內容是最終push版本的內容。
修改沖突后的test.txt內容:
特別,在eclipse中即使是解決了沖突,文件的沖突圖標還在,但並不影響commit&push。如下:
5、沖突解決后,在git status可以看到當前的文件狀態:
(特別需要注意的是當前分支會處在一個MERGING狀態下,以及剛才處理的沖突文件test.txt處於Unmerged paths下。)
根據提示,用git add test.txt,然后在git commit和git push。
此時去看remote中的test.txt內容和commit log: