介绍Git中的合并冲突如何解决?该git merge
命令帮助贡献者从分支添加到项目。这个概念是协作编程的核心思想之一,允许多人在他们的部分代码上工作而没有任何冲突。
当多个贡献者在代码的同一部分工作或使用多个分支时,必然会发生合并冲突。的主要目标git merge
是自动解决或警告这些冲突。
如何解决Git中的合并冲突?本指南解释了合并冲突是什么,并提供了解决方法,以解决无法自动解决的问题。这篇文章还提供了防止 Git 合并冲突的有用提示,包括Git合并冲突的解决方法。
先决条件
- Git 已安装和配置(在Windows、Mac和Ubuntu 上)。
- 本地和远程分支之间的 git 合并冲突。
- 访问终端或命令行
- 本教程的 Vim 编辑器(要安装 Vim,请遵循我们的指南之一:如何在 Ubuntu 18.04上安装 Vim 8.2或如何在 CentOS 7 上安装 Vim 8.2)
git merge
无法解决问题的情况。注意:查看我们方便的Git 命令备忘单,其中包含常用命令,例如
git merge
.合并冲突的一些示例包括:
- 更改文件中的相同代码行。
- 在另一个地方发生更改时删除文件。
Git 合并冲突的类型
合并冲突的一般类型取决于问题出现的时间。冲突发生在:
- 合并前,表示有本地更改不是最新的。在合并开始之前会出现冲突错误消息以避免出现问题。
- 在合并期间,表明存在覆盖问题。出现错误消息并停止合并过程以避免覆盖更改。
1.接受本地版本。要接受来自本地版本的文件的所有更改,请运行:
git checkout --ours <
file name>
或者,要接受所有冲突文件的本地版本,请使用:
git merge --strategy-option ours
2.接受远程版本。要从远程分支更新文件的更改,请运行:
git checkout --theirs <
file name>
【如何解决Git中的合并冲突(详细操作步骤指南)】接受所有冲突文件的远程版本:
git merge --strategy-option theirs
3.单独审查更改。最后一个选项是分别查看每个更改。此选项也是最佳选择,尤其是在处理多个文件和人员时。为了使这项工作更易于管理,请使用特殊工具来帮助查看个别冲突。
最终,选择保留哪些代码部分以及不保留哪些部分取决于开发人员对当前项目的决定。
在 Git 中遇到合并冲突
如何解决Git中的合并冲突?Git 中的合并冲突发生在命令
git merge
抛出错误时。文章图片
错误消息会打印有关冲突所在位置的信息。从错误信息中查看文件,查看发生合并冲突的内容:
文章图片
Git 会自动在冲突的代码行旁边添加三个指标:
- < < < < < < < (七个“小于”字符)后跟HEAD,它是当前分支的别名。符号表示此部分中编辑的开始。
- ========(七个“等号”字符),显示当前分支中修订的结束和新分支中编辑的开始。
- > > > > > > (七个“大于”字符)后跟尝试合并的分支。添加的符号表示冲突分支内编辑的结束。
在 Git 中设置默认 Diff 工具
Git中的合并冲突如何解决?为 设置默认差异工具
git mergetool
:1. 在终端中运行以下行:
git mergetool --tool-help
输出打印出当前设置的所有支持的差异工具:
文章图片
根据选择的编辑器,可以使用不同的工具。例如:
- Emacs差异工具:Ediff 或emerge
- Vim差异工具:vimdiff、vimdiff2 或 vimdiff3
2.更改
git config
设置默认合并工具:git config merge.tool <
tool name>
例如,如果使用 Vim,请运行:
git config merge.tool vimdiff
3. 设置 diff 工具以显示两个文件的共同祖先,即任何编辑之前的版本:
git config merge.conflictstyle diff3
4、设置选项运行前不提示:
git config mergetool.prompt false
Git 的 diff 工具设置已完成。
使用 Mergetool 查看差异
如何解决Git中的合并冲突?要使用
mergetool
并查看差异,请运行:git mergetool
文章图片
输出显示一个具有四个视图的窗口:
1. LOCAL代表来自当前分支的文件版本。
2. BASE是文件在任何更改之前的样子。
3. REMOTE显示文件在冲突信息所在的远程分支中的外观。
4. MERGED有最终的合并文件。此结果表示保存到存储库的内容。
这些窗口之间的主要导航命令是:
- CTRL+WW在窗口之间移动。
- CTLR+WJ跳转到合并窗口视图。
- CTRL+WX切换窗口位置。
:help window-moving
。更新和解决合并冲突
更新 MERGED 文件以解决冲突。更新 MERGED 版本的一些快捷方式包括:
- :diffg LOCAL更新到 LOCAL 版本。
- :diffg BASE更新到 BASE 版本。
- :diffg REMOTE更新到 REMOTE 版本。
一旦信息被更新,保存并退出用
:wqa
。提交和清理
Git合并冲突的解决方法:最后一步是提交和清理额外的文件。通过运行提交更新的版本:
git commit -m "<
your message>"
注意:如果你在提交时犯了错误,你可以撤消最后一次提交。
diff 工具会在项目上创建额外的文件来比较版本。用以下方法清理它们:
git clean -f
文章图片
关于如何防止合并冲突的提示Git中的合并冲突如何解决?合并冲突仅在计算机无法自动解决问题时发生。
以下是有关如何防止合并冲突的一些提示:
- 尽可能使用新文件而不是现有文件。
- 避免在文件末尾添加更改。
- 尽可能频繁地推送和拉动更改。
- 不要美化代码或自行组织导入。
- 通过牢记在同一代码上工作的其他人,避免单独程序员的心态。
如需更多 Git 资源,请查看我们关于什么是 Git 上游和如何设置上游分支的文章。
推荐阅读
- 如何使用helm install命令(用法示例指南)
- 如何计算混合云成本(详细分析和指南)
- 如何拉取和推送Helm Chart(详细操作步骤指南)
- Docker与Kubernetes有什么区别(哪个更好?)
- 如何在Python中处理缺失数据(原因和解决方案)
- 系统之家Ghost windows7纯净版64位旗舰版系统下载
- 硬盘安装windows7 系统64位旗舰版图文图文详细教程
- 有效果windows7企业版系统激活密钥自制步骤
- ghost windows7 64位旗舰版系统激活密钥大全自制步骤