Android Studio、Git 解決合併衝突

合併分支,解決衝突

執行Git merge ,如果有衝突,就會出現如下格式:

<<<<<<< HEAD
這個位置的內容就是當前所在分支的內容
=======
這個位置的內容就是合並進來的分支的內容
>>>>>>> branchName
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

用下面的設置來改進衝突標記使其也顯示(分支)共同祖先(感謝羅賓·斯托克和休·吉登斯): 
git config --global merge.conflictstyle diff3

設置顯示共同祖先之前: 
這裏寫圖片描述

設置了顯示共同祖先之後: 
這裏寫圖片描述 
||||||| merged common ancestors下面的內容就是雙方改動前的內容

雙方改動少的情況下,這種方式還是能一目瞭然的看到改動情況的,但是一旦衝突複雜了,就需要動用工具了,Android Studio就自帶了解決衝突的工具,以下是操作步驟

選中項目->右鍵->Git->Resolve Conflicts

這裏寫圖片描述

會出現一個彈窗,顯示了衝突的文件,選擇某個文件後,點擊Merge

這裏寫圖片描述

會出現三個代碼框

這裏寫圖片描述

a、左邊的Local Changes代表”當前“分支上的修改;
b、右邊的Changes from Server代表“合並進來”的分支上的修改;
c、中間的Result代表經過處理後的最終內容;

左上角有一排按鈕,分別介紹一下作用

這裏寫圖片描述

  • 上下箭頭:跳轉到上(下)一個不同;
  • 這裏寫圖片描述 這三個從左往右依次代表:比較左邊和中間的內容,比較中間和右邊的內容,比較左邊和右邊內容;
  • 這裏寫圖片描述這三個從左往右依次代表:接受兩邊沒有衝突的改變,接受左邊沒有衝突的改變,接受右邊沒有衝突的改變,什麼叫沒有衝突的改變待會兒會解釋;
  • 現在回頭看內容區域,會看到四種顏色 
    • 紅色區域:代表當前分支和合並分支都編輯過的內容,屬於衝突;
    • 藍色區域:代表被單方面編輯過的內容,屬於改變;
    • 灰色區域:代表被刪除的內容,屬於改變;
    • 綠色區域:代表新增的內容,屬於改變;
  • 通過之前所述我們可以知道,真正需要解決的衝突只有紅色區域,其他高亮區域只是爲了讓我們再次確認改變的內容是否合理,如果對自己的代碼有信心,那就不用管那些區域了,c步驟中的三個按鈕就派上用場了,你可以按照自己的需求接受改變的代碼,通常可以直接接受兩邊沒有衝突的改變:

這裏寫圖片描述

  • 接受後就變成上圖了,現在我們需要解決衝突了,如果不記得自己的修改是什麼,就可以關閉該工具,通過查找歷史提交,比對歷史代碼來確認正確的代碼;有的時候由於代碼格式化的原因,你並沒有改變代碼的內容,但是格式化增加了一些空格,那麼也會產生衝突,
發佈了25 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章