当我键入gitdiff时,我想用我选择的可视化diff工具(Windows上的SourceGear“diffmerge”)查看输出。如何配置git以执行此操作?
当前回答
如果你在Mac上,并且有Xcode,那么你已经安装了FileMerge。终端命令是opendiff,因此您可以执行以下操作:
git difftool -t opendiff
其他回答
如果您通过Cygwin执行此操作,则可能需要使用cygpath:
$ git config difftool.bc3.cmd "git-diff-bcomp-wrapper.sh \$LOCAL \$REMOTE"
$ cat git-diff-bcomp-wrapper.sh
#!/bin/sh
"c:/Program Files (x86)/Beyond Compare 3/BComp.exe" `cygpath -w $1` `cygpath -w $2`
对以前的伟大答案的简短总结:
git difftool --tool-help
git config --global diff.tool <chosen tool>
git config --global --add difftool.prompt false
然后通过键入(也可以选择指定文件名)使用它:
git difftool
如果您不熟悉命令行,那么如果您安装了TortoiseGit,您可以右键单击一个文件以获得带有“Diff later”选项的TortoiseGit子菜单。
当您在第一个文件上选择此选项时,您可以右键单击第二个文件,转到TortoiseGit子菜单并选择“Diffwith==yourfilehere==”。这将为结果提供TortoiseGit合并GUI。
在查看了其他一些外部差异工具后,我发现IntelliJ IDEA(和Android Studio)中的差异视图是我最喜欢的。
步骤1-设置IntelliJ IDEA以从命令行运行
如果要使用IntelliJ IDEA作为差异工具,应首先设置IntelliJ IDEA,以便按照以下说明从命令行运行:
在macOS或UNIX上:
确保IntelliJ IDEA正在运行。在主菜单上,选择“工具”|“创建命令行启动器”。将打开“创建启动器脚本”对话框,其中包含启动器脚本的建议路径和名称。您可以接受默认值,也可以指定自己的路径。注意它,因为你稍后会需要它。在IntelliJ IDEA之外,将启动器脚本的路径和名称添加到路径中。
在Windows上:
在Path系统环境变量中指定IntelliJ IDEA可执行文件的位置。在这种情况下,您将能够从任何目录调用IntelliJ IDEA可执行文件和其他IntelliJ IDEA命令。
步骤2-配置git以使用IntelliJ IDEA作为difftool
遵循此博客文章的说明:
Bash
export INTELLIJ_HOME /Applications/IntelliJ\ IDEA\ CE.app/Contents/MacOS
PATH=$IDEA_HOME $PATH
Fish
set INTELLIJ_HOME /Applications/IntelliJ\ IDEA\ CE.app/Contents/MacOS
set PATH $INTELLIJ_HOME $PATH
现在将以下内容添加到git配置中:
[merge]
tool = intellij
[mergetool "intellij"]
cmd = idea merge $(cd $(dirname "$LOCAL") && pwd)/$(basename "$LOCAL") $(cd $(dirname "$REMOTE") && pwd)/$(basename "$REMOTE") $(cd $(dirname "$BASE") && pwd)/$(basename "$BASE") $(cd $(dirname "$MERGED") && pwd)/$(basename "$MERGED")
trustExitCode = true
[diff]
tool = intellij
[difftool "intellij"]
cmd = idea diff $(cd $(dirname "$LOCAL") && pwd)/$(basename "$LOCAL") $(cd $(dirname "$REMOTE") && pwd)/$(basename "$REMOTE")
您可以使用gitdifftool或gitdifftoolHEAD~1进行测试
如果你在Mac上,并且有Xcode,那么你已经安装了FileMerge。终端命令是opendiff,因此您可以执行以下操作:
git difftool -t opendiff
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别