記錄一次Git解決CONFLICT衝突

  • 2019 年 10 月 3 日
  • 筆記

記錄一次Git解決CONFLICT衝突

1.CONFLICT產生的原因

在這個情況下,分支1的版本C跟分支2的版本B的上一個版本是不一樣的,所以這裡需要將版本C與版本B進行自動合併,並解決衝突,然後再講合併之後的版本C提交的master。

2.Git正確的兩種使用流程

這裡我為了保證數據不丟失,每次都會將每個分支的完成情況更新到遠程倉庫,再做pull合併,所以選擇2.2方式

2.1 暫存,拉取,恢復暫存,合併(如果有衝突),提交,推送

git stash :暫存本地程式碼  git pull origin develop : 獲取遠程分支程式碼  git stash pop:恢復之前暫存的文件

2.2 將本地分支先提交遠程分支,再從需要更新的分支pull,此時會自動合併,不能合併的會產生Conflict,如下:

這裡試圖對提示語句進行解釋,但是搜索一個小時,發現網上解釋很少,如果有大俠路過,煩請幫忙糾偏,謝過。

2.2.1枚舉遠程倉庫的文件數量

remote: Enumerating objects: 187, done.

2.2.2再次計算遠程倉庫文件數量?

這裡不明白Enumerating跟Counting的區別,網上有的Enumerating跟Counting數量是相等的,是以Counting為主。
remote: Counting objects: 100% (160/160), done.

2.2.3壓縮成79個文件

remote: Compressing objects: 100% (79/79), done.

2.2.4總共87個文件,47個有差異

remote: Total 87 (delta 47), reused 0 (delta 0)

2.2.5在本地解壓縮87個文件

Unpacking objects: 100% (87/87), done.

2.2.6從遠程倉庫的master分支fetch拉取下來到本地倉庫

-> FETCH_HEAD,-> origin/master是對master的解釋。將當前dev_lirj分支的e3514bc..0169ed4版本與master(origin/master)的最新版本進行合併。

From https://git.dev.tencent.com/JerryMouseLi/VueOMP   * branch            master     -> FETCH_HEAD     e3514bc..0169ed4  master     -> origin/master

2.2.7如下路徑的文件表示合併成功

Auto-merging src/views/home/admin/components/MapCard.vue  Auto-merging src/views/equipview/box.vue  Auto-merging src/views/equipmanage/area.vue  Auto-merging src/api/index.js

2.2.8自動合併失敗,需要修正衝突再提交結果。

Automatic merge failed; fix conflicts and then commit the result.

2.2.9如下路徑文件需要修正衝突

CONFLICT (content): Merge conflict in src/views/equipmanage/area.vue  CONFLICT (content): Merge conflict in src/api/index.js

3 衝突解決

3.1 衝突文件的位置

在這裡我使用的VS code工具會將衝突文件的路徑染成紫色,很人性化。

3.2 area.vue文件的衝突解決

此處有4個選項:

選項 含義
Accept Current Change 接受當前分支1的修改
Accept Incoming Change 接受pull導入主分支的修改
Accept Both Change 同時接受兩個分支的修改
Compare Changes 對比修改,主要用於手動修改

Compare Changes示意圖

這裡選擇Accept Current Change

3.3 index.js文件的衝突解決

同上選擇Accept Incoming Change即可

4 提交推送