最近我使用的是GitExtension 2.46,但具有相同功能的Git版本是1.9.4.msysgit.2.我只想使用Git命令,我卸载了GitExtension并安装了Git和KDiff3的最新版本.
当我进行合并并发生冲突时,我运行以下命令:
$ git mergetool
Run Code Online (Sandbox Code Playgroud)
然后我收到消息:
合并工具kdiff3不能用作'kdiff3'.
我猜它必须是KDiff3路径.
环境
问题:
我必须在.gitconfig文件中配置如何$ git mergetool使用版本LOCAL,REMOTE,BASE和MERGED冲突文件打开KDiff3 GUI 的命令?
如何配置它使用它有diff-tool?
我刚刚在git中将一个分支合并到了我的主人中,我得到了Automatic merge failed; fix conflicts and then commit the result.现在我跑了git mergetool,vimdiff打开了下面的图像.我不知道如何使用vimdiff.这里的每个小组意味着什么,我应该如何解决合并冲突?

今天我试图使用git mergetoolWindows命令提示符,并意识到它默认使用VIM,这很酷,但我更喜欢VSCode.
如何将Visual Studio代码功能作为我的GUI来处理Git的合并冲突(甚至作为差异化工具)?
我发现git mergetool是一个方便的实用程序,用于直观地合并差异,但我正在进行的方式似乎真的很不稳定.基本上,当报告冲突时,我的过程看起来像这样:
如果我有多个冲突,请冲洗,重复.是的,这是我为合并中的每个冲突打开和关闭我的差异查看器一次.因为它是从命令行启动的,关闭它是我知道告诉git mergetool的唯一方法我已经解决了这个特定的冲突并且它可以继续下一个.
当然有更好的方法,但我不知道.请帮忙吗?这个过程看起来很低效.
The documentation is here: http://www.kernel.org/pub/software/scm/git/docs/git-mergetool.html A handy guide is here: http://ryanflorence.com/git-for-beginners/
However, neither of them explain how to use mergetool's filemerge.
我读到的指南说:" 我点击进入,FileMerge弹出,我处理冲突: "但它没有提到如何 " 处理冲突 ".
当我跑:
git mergetool
Run Code Online (Sandbox Code Playgroud)
:然后按提示点击返回,并打开filemerge窗口显示所有合并冲突,它只响应命令cmd + D和cmd + shift + D(允许循环冲突).但是,似乎没有提到如何为每次冲突选择左/右/两者.组合框下拉列表似乎没有做任何事情.
已经查看了文档,指南,文件系统菜单,以及系统按下键盘上的键寻找响应=)
我正在尝试将WinMerge与Git集成,因为我之前在Windows 7旗舰版上看到过其他人.
我已经按照以下步骤操作,但是当我执行git mergetool时默认继续显示错误,默认为vimdiff.
在git的根目录中创建了一个名为winmerge.sh的文件:C/Program Files(x86)/ Git/with:WinMergeU是正确的位置.
#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files (x86)/WinMerge/WinMergeU.exe"
git /e /u /dl "Base" /dr "Mine" "$1" "$2"
Run Code Online (Sandbox Code Playgroud)
并使用以下命令.
git config --global diff.tool winmerge
git config --global difftool.winmerge.cmd "winmerge.sh \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false
Run Code Online (Sandbox Code Playgroud)
错误显示为:
git config option merge.tool set to unknown tool: winmerge
Run Code Online (Sandbox Code Playgroud) 我正试图执行我的第一次Git合并(令人兴奋!),但无法在Windows 7上识别Git Gui(0.13GITGUI,来自Git 1.7.4.msysgit.0)以识别TortoiseMerge(1.6.11.20210 x64).基于对类似问题的回答,我进行了以下配置更改:
$ git config --global merge.tool tortoisemerge
$ git config --global mergetool.tortoisemerge.cmd 'TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"'
$ git config --global --list
...snip...
merge.tool=tortoisemerge
mergetool.tortoisemerge.cmd=TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"
$
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我启动Git Gui并尝试"运行合并工具"时,我收到错误Unsupported merge tool 'tortoisemerge'.
谁能告诉我我做错了什么?这是我的相关部分~/.gitconfig:
[merge]
tool = tortoisemerge
[mergetool "tortoisemerge"]
cmd = TortoiseMerge.exe -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"
Run Code Online (Sandbox Code Playgroud)
更新
git mergetool从命令行运行时,TortoiseMerge可以正常使用上面的配置.似乎只有Git Gui有问题.: - /
好的,所以当我尝试恢复提交(使用Git)时,我有时会收到错误.我所做的就是
git revert <commit hash>
它给了我这样的信息:
error: could not revert <commit hash> <commit message>
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
Run Code Online (Sandbox Code Playgroud)
这是否意味着我应该使用git mergetool并解决任何冲突?一旦我这样做,我可以添加/ rm然后提交,并恢复完成?
可以提交包含冲突数据的文件.有没有办法再次将这些文件标记为冲突,以便运行git mergetool将生成必要的文件并运行合并工具?
如何强制始终显示mergetool GUI并禁用任何自动解析?
有时,当有合并过程中发生冲突,我使用合并工具,它只是立即返回,我打后Enter的问题"回车,启动合并解决工具(kdiff3)",并没有GUI显示,冲突似乎得到解决.
我让Git配置为现在使用KDiff3作为mergetool,但是当我codecompare指定mergetool 时也发生了.我知道在KDiff3 中有一个选项"自动保存并退出合并而没有冲突",这理论上可能导致所描述的行为,但我一直禁用/取消选中此选项.
此外,在Git mergetool gitconfig中直接有trustExitCode选项,我将其设置为true,但即使我将其设置为false,也不会显示GUI.
我不知道是谁自动解决了.Mergetool在一些预处理或KDiff3?
我在Windows上运行并安装了Git扩展.
类似于KDiff3的问题,也在这里被问到:Kdiff3不会用mergetool命令打开