当我键入gitdiff时,我想用我选择的可视化diff工具(Windows上的SourceGear“diffmerge”)查看输出。如何配置git以执行此操作?
当前回答
在VonC解决文件删除和添加问题的基础上,使用以下命令和脚本:
git config --global diff.tool winmerge
git config --global difftool.winmerge.cmd "winmerge.sh \"$LOCAL\" \"$REMOTE\" \"$BASE\""
git config --global difftool.prompt false
这与将其放在全局文件.gitconfig:
[diff]
tool = winmerge
[difftool "winmerge"]
cmd = winmerge.bat "$LOCAL" "$REMOTE" "$BASE"
[difftool]
prompt = false
然后将以下内容放入文件winmerge.sh中,该文件必须位于您的路径上:
#!/bin/sh
NULL="/dev/null"
if [ "$2" = "$NULL" ] ; then
echo "removed: $3"
elif [ "$1" = "$NULL" ] ; then
echo "added: $3"
else
echo "changed: $3"
"C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -ub -dl "Base" -dr "Mine" "$1" "$2"
fi
其他回答
您可能想尝试xd,它是Git/SVNdiff的GUI包装器。它本身不是diff工具。
当你想运行git diff或svn diff时,你可以运行xd,它会向你显示一个文件列表,一个预览窗口,你可以启动任何你喜欢的diff工具,包括tkdiff、xxdiff、gvimdiff、Emacs(ediff)、XEmacs(diff)、Meld、Diffuse、Kompare和KDiff3。您也可以运行任何自定义工具。
不幸的是,该工具不支持Windows。
披露:我是这个工具的作者。
在Mac OS X上,
git difftool -t diffuse
在Git文件夹中为我做这项工作。要安装漫反射,可以使用端口-
sudo port install diffuse
在查看了其他一些外部差异工具后,我发现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进行测试
对于如何在1.6.3之前的Git版本上配置diff工具的Linux版本(1.6.3向Git添加了difftool),这是一个非常简洁的教程。
简而言之:
步骤1:将其添加到.gitconfig中
[diff]
external = git_diff_wrapper
[pager]
diff =
步骤2:创建一个名为git_diff_wrapper的文件,将其放在$PATH中的某个位置
#!/bin/sh
vimdiff "$2" "$5"
以下内容可以从这里的其他答案中获得,但对我来说,这很难(信息太多),所以这里是tkdiff的“只需键入”答案:
git difftool --tool=tkdiff <path to the file to be diffed>
你可以用你最喜欢的diffing工具的可执行文件名来代替tkdiff。只要(例如tkdiff),(或您最喜欢的diffing工具)在您的PATH中,它就会启动。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的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之间的区别