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