当我输入时git diff,我想用我选择的视觉差异工具(Windows上的SourceGear"diffmerge")查看输出.如何配置git来执行此操作?
我这样配置git:
git config --global diff.tool meld
Run Code Online (Sandbox Code Playgroud)
当我跑:
git difftool
Run Code Online (Sandbox Code Playgroud)
我收到以下消息:
Viewing: 'hello.txt'
Hit return to launch 'meld':
Run Code Online (Sandbox Code Playgroud)
然后,如果我按Enter,meld将启动.
如何禁用此消息,以便meld在键入后立即启动git difftool?
当我输入"git diff"时,我想看到一个并排的差异,就像"diff -y"一样,或者喜欢在像"kdiff3"这样的交互式差异工具中显示差异.如何才能做到这一点?
我可以嵌入以下bash shell代码:
for name in $(git diff --name-only $1); do git difftool $1 $name & done
Run Code Online (Sandbox Code Playgroud)
直接进入git别名的创建:
git config --global alias.diffall ***my-bash-code-here***
Run Code Online (Sandbox Code Playgroud)
这是我之前在SO 上的问题/答案引出的,我把代码放到.sh文件中,然后别名到文件:
git config --global alias.diffall '!sh diffall.sh'
Run Code Online (Sandbox Code Playgroud)
但是,在永无止境的简单追求中,必须有一种跳过文件并将代码直接插入别名的方法吗?我无法弄清楚格式......
我发现git mergetool是一个方便的实用程序,用于直观地合并差异,但我正在进行的方式似乎真的很不稳定.基本上,当报告冲突时,我的过程看起来像这样:
如果我有多个冲突,请冲洗,重复.是的,这是我为合并中的每个冲突打开和关闭我的差异查看器一次.因为它是从命令行启动的,关闭它是我知道告诉git mergetool的唯一方法我已经解决了这个特定的冲突并且它可以继续下一个.
当然有更好的方法,但我不知道.请帮忙吗?这个过程看起来很低效.
有没有一种简单的方法可以将旧git提交的文件树与工作文件树进行比较?
git-difftool做了非常相似的事情,但我不希望它实际上做任何差异; 重点是它调用的工具可以为它提供更好的界面.
我正在尝试使用vimdiff + dirdiff.vim在Vim中使用Git版本化多个文件.
对于Mercurial,可以使用mercurial extdiff扩展.
我在网上Vim的Git的差异整合上发现的唯一的办法就是在烧毛文件用Vimdiff,在描述这个职位.
有谁知道如何使用vimdiff + dirdiff + git?
我正在尝试使用Araxis Merge作为MSYSGit的差异/合并工具.
我在网上找到了一些资源:
我建立 /bin/git-diff-driver.sh
#!/bin/sh
"/c/Program Files/Araxis/Araxis Merge/compare.exe" -title1:"$1 (repo version)" -title2:"$1 " -max "$2" "$5"
Run Code Online (Sandbox Code Playgroud)
并编辑 gitconfig
[merge]
tool = araxismerge
[mergetool "araxismerge"]
cmd = "/c/Program Files/Araxis/Araxis Merge/compare.exe" -3 -merge -wait $LOCAL $BASE $REMOTE $MERGED
[diff]
external = "/bin/git-diff-driver.sh"
Run Code Online (Sandbox Code Playgroud)
我得到的唯一结果是:
$ git diff HEAD ^ HEAD
外部差异死亡,停在PowerEditor/src/Notepad_plus.cpp.
我也尝试过使用"c:/Program Files/Araxis/Araxis Merge/compare.exe"其中一个答案所建议的exe ,并得到相同的结果.
我发现如果你使用TortoiseGit它可以轻松设置,但它似乎自己处理diff并且没有来自TortoiseGit的设置给出任何关于如何在从命令行调用diff时将Araxis设置为合并工具的指示.
所以,问题是:是否有人成功使用Araxis Merge来区分和合并MSYSGit,如果是这样,你怎么样?
是否有允许在GUI中探索输出git-diff命令的程序?
我正在寻找的是类似于SmartGit如何显示其对工作副本和HEAD之间差异的看法.显示与HEAD不同的每个文件,并显示焦点文件的差异.
我不确定是否可以使SmartGit显示"git diff"命令的输出.

有人正在向我发送由"git format-patch"生成的补丁.
是否有一个gui(在Linux上)可以打开这些.patch文件?
我尝试了很多差异,但他们所做的就是比较两个现有的文件/文件夹.没有可以显示补丁,除了kompare,它吐出"差异格式错误.有些行无法解析,不会在差异视图中显示." 每次.
出于代码审查的目的,我非常习惯使用该bzr qlog命令直观地查看两次提交之间的更改.我现在开始使用git,我正在寻找相应的东西.我想要的三个主要功能是:
到目前为止我发现的最接近的git组合是注册meld为git diff工具,然后git cola用来比较修订版.不幸的是,这里的修订查看器是有限的,我一次只能比较一个文件.
我的后备解决方案当然是使用bzr-git然后简单地运行bzr qlog.我已经尝试了这个并且似乎工作正常,我只是担心当我开始在存储库中使用git特定功能时它会开始让我失望.
那么,是否有一个git工具或一系列工具,我可以毫不费力地获得相同的基本结果?
注意:我对SmartGit等商业解决方案不感兴趣
配置外部差异时,每个文件显示结果,即查看当前运行差异查看器所需的下一个文件的差异.
有没有办法让git并行生成所有差异查看器进程?
如果我只是从外部diff脚本中生成进程,显然git会删除它用于比较的临时文件.
所以
#!/usr/bin/python
import subprocess
import sys
p = subprocess.Popen(('/usr/bin/meld', sys.argv[2], sys.argv[5]))
#p.wait()
Run Code Online (Sandbox Code Playgroud)
没用,显示'无法读取'/tmp/.diff_VlLwKF'
但是,如果我取消注释
#p.wait()
Run Code Online (Sandbox Code Playgroud)
一切正常,但同样,它是顺序产卵,而不是平行.
谢谢