当我输入git diff时,我希望看到一个并排的diff,就像用diff -y一样,或者像在kdiff3这样的交互式diff工具中显示diff。如何做到这一点呢?
当前回答
export GIT_EXTERNAL_DIFF='meld $2 $5; echo >/dev/null'
然后简单的:
git diff
其他回答
这里有一个方法。如果管道通过less, xterm宽度设置为80,这不是很热。但是如果继续执行命令,例如COLS=210,则可以使用扩展的xterm。
gitdiff()
{
local width=${COLS:-$(tput cols)}
GIT_EXTERNAL_DIFF="diff -yW$width \$2 \$5; echo >/dev/null" git diff "$@"
}
打开Intellij IDEA,在“版本控制”工具窗口中选择单个或多个提交,浏览更改的文件,然后双击它们,并排检查每个文件的更改。
使用捆绑的命令行启动器,您可以在任何地方使用简单的IDEA some/path启动IDEA
我个人非常喜欢icdiff !
如果你在Mac OS X上使用HomeBrew,只需安装icdiff即可。
为了获得正确的文件标签,加上其他很酷的功能,我在~/.gitconfig中有:
[pager]
difftool = true
[diff]
tool = icdiff
[difftool "icdiff"]
cmd = icdiff --head=5000 --highlight --line-numbers -L \"$BASE\" -L \"$REMOTE\" \"$LOCAL\" \"$REMOTE\"
我用git difftool
尝试 git difftool
使用git difftool而不是git diff,你将永远不会回到过去。
UPDATE添加一个示例用法:
这是另一个关于git difftool的stackoverflow的链接:我如何用我喜欢的diff工具/查看器查看'git diff'输出?
对于较新版本的git, difftool命令支持许多即时可用的外部diff工具。例如vimdiff是自动支持的,可以通过以下方式从命令行打开:
cd /path/to/git/repo
git difftool --tool=vimdiff
其他支持的外部diff工具通过git difftool列出——tool-help这里是一个示例输出:
'git difftool --tool=<tool>' may be set to one of the following:
araxis
kompare
vimdiff
vimdiff2
The following tools are valid, but not currently available:
bc3
codecompare
deltawalker
diffuse
ecmerge
emerge
gvimdiff
gvimdiff2
kdiff3
meld
opendiff
tkdiff
xxdiff
你可以使用sdiff做一个并排的diff,如下所示:
$ git difftool -y -x sdiff HEAD^ | less
其中HEAD^是一个例子,你应该用任何你想要反对的东西来替换它。
我在这里找到了这个解决方案,还有一些其他的建议。然而,这一个答案是OP的问题简洁而清楚。
有关这些论点的解释,请参阅man git-difftool。
把注释记在板上,你可以通过编写以下可执行脚本创建一个方便的git sdiff命令:
#!/bin/sh
git difftool -y -x "sdiff -w $(tput cols)" "${@}" | less
保存为/usr/bin/git-sdiff并chmod +x它。然后你就可以这样做了:
$ git sdiff HEAD^
额外的小费
正如评论中所建议的,你可以使用icdiff来做sdiff对彩色输出所做的事情:
$ more /usr/bin/git-sdiff
#!/bin/sh
git difftool -y -x "icdiff --cols $(tput cols)" "${@}" | less --raw-control-chars
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的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之间的区别