解決Git 中的合併衝突| D棧 - Delft Stack
文章推薦指數: 80 %
Copy $ git merge main Auto-merging README.md CONFLICT (add/add): Merge conflict in README.md Automatic merge failed; fix conflicts and then ...
Git貼士
.git目錄解釋
GitFetch和GitPull的區別
Git中的Gitkeep和Gitignore
Git中的gitignore檔案
Git中的子模組更新
Git中的日誌圖
Git中的重置和恢復
Git倉庫視覺化
reportthisad
貼士文章
Git貼士
解決Git中的合併衝突
在本教程中,我們將演示如何解決在Git中合併兩個分支時出現的衝突。
通常,協作團隊環境中的不同團隊成員通常對相同的檔案進行工作。
例如,一位從事某些功能開發的團隊成員可能會編輯README檔案以提供有關所開發功能的資訊。
另一位致力於修復錯誤的團隊成員可能會在同一個README檔案中新增有關已修復錯誤的資訊。
他們可能在不同的分支上工作並在各自的分支中提交他們的更改。
有時,需要合併不同的分支以提供有凝聚力的構建。
因此,在不同分支更新相同檔案時,此操作會導致合併衝突。
然後需要解決衝突併合並更改。
我們現在將通過一個例子來說明這一點。
使用gitmergetool解決合併兩個分支時出現的衝突
在解決合併衝突之前,我們應該設定Git使用的diff工具,如下所示。
$gitconfigmerge.toolmeld
$gitconfigmerge.conflictstylediff3
$gitconfigmergetool.promptfalse
上面的命令將meld設定為預設的diff工具。
此外,我們已將conflictstyle設定為diff3;這將diff工具設定為顯示兩個檔案的共同祖先(當前分支一和分支中要合併的分支)。
要檢視支援的不同差異工具,請執行以下命令。
$gitmergetool--tool-help
現在,我們從示例開始演示如何解決衝突。
假設我們有兩個分支,如下所示。
$gitbranch
*main
feature1
第一個分支是main分支,第二個是名為feature1的功能開發分支。
我們在main分支中有一個README.md檔案,其內容如下。
$catREADME.md
#Upwork
Upworkprojects
如上所示,我們目前在main分支。
然後,我們切換到feature1分支。
$gitcheckoutfeature1
Switchedtobranch'feature1'
$gitbranch
main
*feature1
我們更新README.md並列印其內容如下。
$catREADME.md
Thisisconflictingbranchline.
現在,我們將main分支與feature1分支合併以獲取該分支中的最新更改。
合併時,Git顯示合併衝突如下。
$gitmergemain
Auto-mergingREADME.md
CONFLICT(add/add):MergeconflictinREADME.md
Automaticmergefailed;fixconflictsandthencommittheresult.
我們可以通過以下方式獲得有關衝突的更多資訊。
$gitstatus
Onbranchfeature1
Youhaveunmergedpaths.
(fixconflictsandrun"gitcommit")
Unmergedpaths:
(use"gitadd
$catREADME.md
<<<<<<>>>>>>main
該檔案現在顯示了各種符號。
符號<<<<<<>>>>>>>後跟遠端分支名稱,即main,顯示嘗試合併的位置。
現在,我們將使用mergetool來解決衝突。
$gitmergetool
Merging:
README.md
Normalmergeconflictfor'README.md':
{local}:createdfile
{remote}:createdfile
這將啟動meld(因為我們已將其設定為預設差異工具)。
請看下圖。
左窗格顯示在本地分支中對檔案README.md所做的編輯。
中間窗格包含為解決衝突所做的更改結果。
右窗格顯示在遠端分支(即我們要合併的分支)中的編輯內容,即main。
我們可以選擇保留本地和遠端更改或其中之一。
我們將選擇保持遠端分支更改如下。
然後我們將儲存並退出meld工具。
我們將列印README.md檔案並檢視更新。
$catREADME.md
#Upwork
Upworkprojects
我們現在將更改提交到Git。
$gitcommit-m"mergedfrommain"
[feature13c39d7b]mergedfrommain
我們現在將執行gitdiff命令來檢查feature1和main分支之間的衝突。
$gitdifffeature1main
我們將檢查feature1分支的狀態。
$gitstatus
Onbranchfeature1
Untrackedfiles:
(use"gitadd
執行以下命令將其刪除:
$gitclean-f
因此,我們已經成功解決了使用Git的mergetool合併兩個分支時的衝突。
相關文章-GitMerge
Git合併倉庫
Git撤消合併
在Git中合併分支時快進操作
在Git中合併分支而不使用快進
相關文章-GitMergetool
Git合併倉庫
Git撤消合併
在Git中合併分支時快進操作
在Git中合併分支而不使用快進
從Git中的分支中刪除提交重新命名本地和遠端Git分支
reportthisad
xx
延伸文章資訊
- 1解决冲突- 廖雪峰的官方网站
git merge feature1 Auto-merging readme.txt CONFLICT (content): Merge conflict in readme.txt Autom...
- 26.解決合併的衝突【教學1 使用分支】 | 連猴子都能懂的Git入門 ...
git merge issue3 Auto-merging myfile.txt CONFLICT (content): Merge conflict in myfile.txt Automat...
- 3git遇到衝突了怎麼辦?別緊張,解衝後就好了。
When we use git merge to merge two branches, git has its own way to determine whether there is a ...
- 4git合并冲突解决方法- ZhangRuoxu - 博客园
3、git commit 注意 :没有-m选项进去类似于vim的操作界面,把conflict相关的行删除掉. 4、直接push就可以了,因为刚刚已经执行过相关merge操作了.
- 5合併發生衝突了,怎麼辦? - 為你自己學Git | 高見龍 - gitbook.tw
git merge dog Auto-merging index.html CONFLICT (content): Merge conflict in index.html ... 這問題看來是...