当我键入gitdiff时,我想用我选择的可视化diff工具(Windows上的SourceGear“diffmerge”)查看输出。如何配置git以执行此操作?
当前回答
如果你恰好已经有一个与文件类型相关的diff工具(比如,因为你安装了TortoiseSVN,它附带了一个diff查看器),你可以将常规的git diff输出通过管道发送到一个“temp”文件,然后直接打开该文件,而无需了解查看器:
git diff > "~/temp.diff" && start "~/temp.diff"
将其设置为全局别名效果更好:gitwhat
[alias]
what = "!f() { git diff > "~/temp.diff" && start "~/temp.diff"; }; f"
其他回答
以下内容可以从这里的其他答案中获得,但对我来说,这很难(信息太多),所以这里是tkdiff的“只需键入”答案:
git difftool --tool=tkdiff <path to the file to be diffed>
你可以用你最喜欢的diffing工具的可执行文件名来代替tkdiff。只要(例如tkdiff),(或您最喜欢的diffing工具)在您的PATH中,它就会启动。
如果您通过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`
对于如何在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"
使用新的gitdifftool,只需将其添加到.gitconfig文件中即可:
[diff]
tool = any-name
[difftool "any-name"]
cmd = "\"C:/path/to/my/ext/diff.exe\" \"$LOCAL\" \"$REMOTE\""
也可以选择添加:
[difftool]
prompt = false
还可以查看diffall,这是我编写的一个简单脚本,用于扩展串行打开每个文件的烦人(IMO)默认diff行为。
Windows上的全局.gitconfig位于%USERPROFILE%\.gitconfig中
如果你恰好已经有一个与文件类型相关的diff工具(比如,因为你安装了TortoiseSVN,它附带了一个diff查看器),你可以将常规的git diff输出通过管道发送到一个“temp”文件,然后直接打开该文件,而无需了解查看器:
git diff > "~/temp.diff" && start "~/temp.diff"
将其设置为全局别名效果更好:gitwhat
[alias]
what = "!f() { git diff > "~/temp.diff" && start "~/temp.diff"; }; f"
推荐文章
- 了解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之间的区别
- GitHub -致命:无法读取用户名https://github.com':没有这样的文件或目录
- 撤消git平分错误
- 使用.gitconfig配置diff工具
- 如何从另一个文件A中删除文件B中出现的行?
- 如何配置Mac OS X术语,使git有颜色?