如何使用首选的差异工具/查看器查看“ git diff”输出?

可紊 提交于 2019-12-21 21:41:49

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

当我输入git diff ,我想使用我选择的可视化diff工具(在Windows上为SourceGear“ diffmerge”)查看输出。 如何配置git来做到这一点?


#1楼

使用新的git difftool ,就像将它添加到.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


#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"

#3楼

我已经在~/.gitconfig使用了很长时间:

[diff]
    external = ~/Dropbox/source/bash/git-meld

使用git-meld

#!/bin/bash
if [ "$DISPLAY" = "" ];
then
    diff $2 $5
else
    meld $2 $5
fi

但是现在我厌倦了总是在图形化环境中使用meld的方法,并且用这种设置调用普通的diff并不容易,所以我切换到了这个:

[alias]
    v =  "!sh -c 'if [ $# -eq 0 ] ; then git difftool -y -t meld ; else git difftool -y $@ ; fi' -"

使用此设置,可以完成以下工作:

git v
git v --staged
git v -t kompare
git v --staged -t tkdiff

而且我仍然可以保留旧的git diff


#4楼

我在这里尝试了花哨的东西(与tkdiff一起使用),对我没有任何帮助。 因此,我编写了以下脚本tkgitdiff。 它做了我需要做的事。

$ cat tkgitdiff
#!/bin/sh

#
# tkdiff for git.
# Gives you the diff between HEAD and the current state of your file.
#

newfile=$1
git diff HEAD -- $newfile > /tmp/patch.dat
cp $newfile /tmp
savedPWD=$PWD
cd /tmp
patch -R $newfile < patch.dat
cd $savedPWD
tkdiff /tmp/$newfile $newfile

#5楼

您可以使用git difftool

例如,如果您有meld ,则可以通过以下方式编辑分支masterdevel

git config --global diff.external meld
git difftool master..devel
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!