Git merge 是 Git 版本控制系统中用于将两个分支的更改合并到一个分支的操作。当两个分支对同一文件的同一部分进行了不同的更改时,就会发生冲突(conflict)。在这种情况下,Git 无法自动决定如何合并这些更改,需要手动解决冲突。
当发生冲突时,Git 会提示哪些文件存在冲突,并在文件中标记冲突的部分。开发者需要手动编辑这些文件,解决冲突后提交更改。
假设我们有两个分支 feature
和 main
,feature
分支对 file.txt
文件进行了更改,而 main
分支也对同一文件进行了不同的更改。
# 切换到 main 分支
git checkout main
# 尝试合并 feature 分支
git merge feature
如果发生冲突,Git 会提示:
CONFLICT (content): Merge conflict in file.txt
Automatic merge failed; fix conflicts and then commit the result.
此时,打开 file.txt
文件,会看到类似以下的标记:
<<<<<<< HEAD
This is the main branch content.
=======
This is the feature branch content.
>>>>>>> feature
开发者需要手动编辑文件,解决冲突:
This is the combined content.
然后提交更改:
git add file.txt
git commit -m "Resolved conflict in file.txt"
如果想将本地副本替换为公共祖先副本,可以使用以下命令:
# 查找公共祖先
git merge-base HEAD feature
# 将本地副本重置到公共祖先
git reset --hard <commit-hash>
其中 <commit-hash>
是公共祖先的提交哈希值。
通过以上步骤,可以有效地解决 Git merge 过程中的冲突,并将本地副本替换为公共祖先副本。
领取专属 10元无门槛券
手把手带您无忧上云