記錄一次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即可