Try:
git mergetool
它会打开一个 GUI,引导您解决每个冲突,然后您可以选择如何合并。有时事后需要进行一些手动编辑,但通常本身就足够了。这肯定比手工完成整个事情要好得多。
As per 乔什·格洛弗的评论 https://stackoverflow.com/questions/161813/how-to-resolve-merge-conflicts-in-git-repository#comment6881558_163659:
[此命令]
除非您安装了 GUI,否则不一定会打开 GUI。跑步git mergetool
对我来说导致vimdiff
正在使用。您可以安装
使用以下工具之一来代替:meld
, opendiff
,
kdiff3
, tkdiff
, xxdiff
, tortoisemerge
, gvimdiff
, diffuse
,
ecmerge
, p4merge
, araxis
, vimdiff
, emerge
.
以下是使用的示例过程vimdiff
解决合并冲突,基于这个链接 http://www.rosipov.com/blog/use-vimdiff-as-git-mergetool/#fromHistor.
-
在终端中运行以下命令
git config merge.tool vimdiff
git config merge.conflictstyle diff3
git config mergetool.prompt false
这将设置vimdiff
作为默认合并工具。
-
在终端中运行以下命令
git mergetool
-
你会看到一个vimdiff
以以下格式显示:
╔═══════╦══════╦════════╗
║ ║ ║ ║
║ LOCAL ║ BASE ║ REMOTE ║
║ ║ ║ ║
╠═══════╩══════╩════════╣
║ ║
║ MERGED ║
║ ║
╚═══════════════════════╝
这4个视图是
-
LOCAL:这是当前分支的文件
-
BASE:共同的祖先,这个文件在两次更改之前的样子
-
REMOTE:您要合并到分支中的文件
-
MERGED:合并结果;这是在合并提交中保存并在将来使用的内容
You can navigate among these views using ctrl+w. You can directly reach the MERGED view using ctrl+w followed by j.
有关更多信息vimdiff
导航是here https://stackoverflow.com/questions/4556184/vim-move-window-left-right and here https://stackoverflow.com/questions/27151456/how-do-i-jump-to-the-next-prev-diff-in-git-difftool.
-
您可以像这样编辑 MERGED 视图:
-
如果您想从 REMOTE 获取更改
:diffg RE
-
如果您想从 BASE 获取更改
:diffg BA
-
如果您想从 LOCAL 获取更改
:diffg LO
-
保存、退出、提交和清理
:wqa
保存并退出vi
git commit -m "message"
git clean
删除额外的文件(例如*.orig
). Warning:如果您不传递任何参数,它将删除所有未跟踪的文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)