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的時候不會有任何衝突了。