1. 程式人生 > >git conflict衝突解決

git conflict衝突解決

git -----pull request時候的衝突解決:
            pull requeses記錄裡面檢視------------所有的commit記錄--------對比diff  和 history記錄
            1)pull 對應分支到本地
            2)修改本地,commit
            3)push分支到fork庫
            4)pull request到集中庫-------存在open狀態的之前的pull request時候,不需要重新pull request。

直接編輯衝突檔案

衝突產生後,檔案系統中衝突了的檔案(這裡是test.txt)裡面的內容會顯示為類似下面這樣:

a123<<<<<<< HEAD
b789=======
b45678910>>>>>>> 6853e5ff961e684d3a6c02d4d06183b5ff330dcc


其中:衝突標記<<<<<<< (7個<)與=======之間的內容是我的修改,=======與>>>>>>>之間的內容是別人的修改。

此時,還沒有任何其它垃圾檔案產生


 至少自己寫的程式碼邏輯自己是清楚的
備份自己的程式碼,還原衝突檔案至最新。
再將自己的程式碼邏輯嘗試添加回去。


我的經驗是cherry-pick ,首先git pull 發現衝突,這時候記錄下提交的commit id ,然後git reset --hard 到一個較早的歷史版本,git pull 到最新程式碼,這時候cherry-pick 剛才記錄的id,如果有衝突,解決,然後git add ,git cherry-pick --continue 搞定

我的經驗:在特性分支上開發的過程中就要經常與主幹分支進行rebase,能讓你最後在合併程式碼的時候輕鬆很多。
都知道整合是個很痛苦的事,各種衝突。與其把它放到最後讓人痛苦,不如平時就抽出一些時間來解決這些問題。
我習慣2~3天就和主幹分支進行一次rebase,這個時候即使有衝突也是很好解決的。


在分支開發完畢的時候進行最後一次rebase,然後在進行merge的時候不會有任何衝突了。