樹沖突 文件名修改造成的沖突,稱為樹沖突。
比如,A同事把文件改名為A.C,B同事把同一個文件改名為B.C,那么B同事將這兩個commit合並時,會產生沖突。
如果最終確定用B同事的文件名,那么解決辦法如下: git rm A.C git rm origin-name.C git add B.C git commit 如果最終確定用A同事的文件名,那么解決辦法如下:
git rm B.C git rm origin-name.C git add A.C git commit 內容沖突(git pull拉取最新代碼發現)
一般來講,出現沖突時都會有“CONFLICT”字樣,特別的直接報錯repo sync的報錯,可能並不是直接提示沖突 現在,需要進入報錯的項目(git庫)目錄,
然后執行git rebase解決: git rebase remote -branch-name 沖突解決的一般步驟 merge/patch的沖突解決 先編輯沖突,
然后git commit提交。 對於git來講,
編輯沖突跟平時的修改代碼沒什么差異。修改完成后,都是要把修改添加到緩存,然后commit。 rebase的沖突解決 rebase的沖突解決過程,就是解決每個應用補丁沖突的過程。
解決完一個補丁應用的沖突后,執行下面命令標記沖突已解決(也就是把修改內容加入緩存) git add -u -u 表示把所有已track的文件的新的修改加入緩存,但不加入新的文件。
然后執行下面命令繼續rebase: git rebase --continue 有沖突繼續解決,重復這這些步驟,直到rebase完成。
如果中間遇到某個補丁不需要應用,可以用下面命令忽略: git rebase --skip 如果想回到rebase執行之前的狀態,
可以執行: git rebase --abort 注:rebase之后,不需要執行commit,也不存在新的修改需要提交,都是git自動完成。
直接編輯沖突文件: 沖突標記<<<<<<< (7個<)與=======之間的內容是我的修改 =======與>>>>>>>之間的內容是別人的修改 最簡單的編輯沖突的辦法,就是直接編輯沖突了的文件(test.txt)
,把沖突標記刪掉,把沖突解決正確。 此時,還沒有任何其它垃圾文件產生。 利用圖形界面工具解決沖突 如果要解決的沖突很多,且比較復雜,圖形界面的沖突解決工具就顯得很重要了。
執行git mergetool用預先配置的Beyond Compare解決沖突: 界面三個窗口依次是“LOCAL”、“BASE”、“REMOTE”,它們只是提供解決沖突需要的信息,是無法編輯的。 下面一個窗口是合並后的結果,
可以手動修改,也可以點擊相應顏色的箭頭選擇“LOCAL”或者“REMOTE”。 在Beyond Compare中修改沖突保存后,沖突文件(test.txt)中的沖突標記就沒有了,成了修改后的內容,
一個文件的沖突編輯就完成了。 注意:啟動Beyond Compare之后,會自動生成幾個包含大寫字母名稱、數字的輔助文件 關閉Beyond Compare時,這幾個輔助文件都會自動刪除,
但同時會生成一個test.txt.orig的文件,內容是解決沖突前的沖突現場。