【Git】git使用 - 沖突conflict的解決演示


沖突的解決

  (如果git使用不熟練)建議在push不了時,pull之前。在本地創建一個新的分支並commit到local,以保證本地有commit記錄,萬一出什么問題,可以找回代碼,以免代碼丟失。

  (更甚者,把整個文件夾備份,不然出現找不回代碼那就開心了)

  多人開發時Git下沖突的產生和解決

演示

  項目中有一個文件test.txt,其內容為(以下是在github倉庫中截得文件內容):

image

  1、保證項目的正確性,先pull到最新版本。

  2、修改local的test.txt的文件內容,修改后的內容是:

image

然后local查看狀態,及commit到本地倉庫。

image

  3、 (再1之后),修改test.txt,並push到remote。

(以下是我直接在github的倉庫編輯提交的。)

image

查看remote的commit log,可以發現有一次新的提交。

image

這樣就造成了沖突,因為local的test.txt版本與服務器的版本不一致。

 

4、push本地的commit,發現無法push。

image

發現需要先 git pull,於是先更新。

image

pull后,給出了明確的錯誤提示”Automatic merge failed; fix conflicts and then commit the result.”。

此時查看test.txt的內容:

image

其中<<<<<<< HEAD 到 ======= 中間的內容是local提交的。

======= 到 >>>>>>> commit-id 是遠程倉庫中的內容。

(和svn類似。)

如何解決沖突? 刪除這些注釋,保證test.txt的內容是最終push版本的內容。

修改沖突后的test.txt內容:

image

特別,在eclipse中即使是解決了沖突,文件的沖突圖標還在,但並不影響commit&push。如下:

image

5、沖突解決后,在git status可以看到當前的文件狀態:

(特別需要注意的是當前分支會處在一個MERGING狀態下,以及剛才處理的沖突文件test.txt處於Unmerged paths下。)

image

根據提示,用git add test.txt,然后在git commit和git push。

image

image

此時去看remote中的test.txt內容和commit log:

image

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM