混帐difftool,打开所有的差异文件立即,而不是在串行

默认的git的差异行为是打开串口每个差异文件(等待前一个文件打开一个文件前被关闭)。

我正在寻找一种方式来打开所有文件一次 - 在BeyondCompare的例子,这会打开在同一BC窗口中的选项卡中的所有文件。

这将使它更容易检查一组变化复杂; 轻弹向前后的差异文件之间,而忽略不重要的文件。

--------------解决方案-------------

与开始git v1.7.11,你可以使用git difftool --dir-diff执行目录比较。

接下来的答案适用于git超过v1.7.11安装。


同样有人问git的邮件列表中。

我放在一起的基础上从而执行任意提交之间的目录比较的电子邮件线程的shell脚本。

使用Git v1.7.10开始, git-diffall脚本包含在contrib标准git的安装。

对于v1.7.10之前的版本中,您可以安装从git-diffall在GitHub上的项目。

下面是该项目的说明:

该混帐diffall脚本提供了一个基于目录比较机制混帐。 该脚本依赖于diff.tool配置选项,以确定哪些差异阅读器使用。

这个脚本是与所有用于指定一个版本范围,以差异的形式兼容:

1) git diffall显示工作树和阶段性变化之间的差异
2) git diffall --cached [<commit>]显示差异之间上演的变化和HEAD或其他指定提交)
3) git diffall <commit>显示工作树而得名提交的差异
4) git diffall <commit> <commit>两个命名提交的节目差异
5) git diffall <commit>..<commit>同上
git diffall <commit>...<commit>显示在含有分支和高达第二变化,开始于两者的共同祖先<commit>

注:所有形式的一个可选的路径限制器[--] [<path>]

该脚本是基于GIT中名单上提供由托马斯拉斯特一个例子。

编辑:我打包这个故事成为一个博客张贴在这里,它似乎是一个很好的借口了第一个博客:)


以下是我已经定居在:

for name in $(git diff --name-only $1); do git difftool $1 $name & done

这个被修改的文件列表,并呼吁每个单独的文件的外部比较工具。

关键它是命令参数,它告诉外部diff命令在后台任务运行,从而使连续的diff立即运行。 在BeyondCompare的情况下,这将导致所有的文件,在标签中相同的BC窗口,这就是我想要中打开。

为了方便使用,我救了脚本,一个名为diffall.sh并复制 / 我-git的安装目录/加利福尼亚/文件夹,以便它在我的道路,然后创建一个Git别名叫diffall:

git config --global alias.diffall '!sh diffall.sh'

现在,我可以通过键入运行它(接受可选参数,可以如头部或--staged):

git diffall

并且求助于正常的外部差异等:

git difftool


编辑:更新(在博客的详细信息)来处理与空间的路径,更多的无提示设置,和多输入PARAMS。

git diff --name-only "[email protected]" | while read filename; do
git difftool "[email protected]" --no-prompt "$filename" &
done

meld有一个整洁的功能,如果你给它下的源代码管理目录(GIT,水银,颠覆,集市和可能等)它会自动列出所有修改过的文件,你可以双击查看个体差异。

国际海事组织它更容易输入meld .并把它搞清楚了VCS比配置VCS启动meld 另外,您可以使用相同的命令,不管你的项目发生了什么VCS被使用,如果它们之间有很多开关,它是伟大的。

唯一的缺点是速度较慢的MELD扫描的变化,而不是传递从混帐/ HG / SVN的变化,但无论是缓慢的,足以成为一个问题将取决于你如何使用它,我敢肯定。

git meld => https://github.com/wmanley/git-meld是一个真棒脚本将在一个窗口中打开一个整洁的diff的所有文件。

我也觉得这个方法(GitDiff.bat和GitDiff.rb),其将文件复制出老/新的临时迪尔斯,然后再执行文件夹对他们进行比较。

但我宁愿(从工作目录),直接查看的工作文件,作为BeyondCompare具有能够从差异窗口,这是伟大的快速清理中编辑文件的方便的功能。

编辑:在这里回应我的git的邮件列表上的问题类似的方法。

在这里注意到,Araxis合并具有“-nowait'命令选项:

-nowait可防止等待一个比较封闭比较

也许这将返回立即退出代码和会的工作,任何人都经历呢? 无法找到BeyondCompare类似的选项...

如果你想要做的就是打开所有当前修改的文件,你可以试试:

六$(GIT状态| sed的-n“/.*modified:* /秒/// P')

如果你正在做的“复台的变化”提交,你可能需要重新考虑你的工作流程。 其中一个混帐的非常好的功能是,它很容易让开发人员将复杂的变更集了一系列简单的补丁。 而不是试图编辑所有正在修改的文件,你可能要考虑

git的添加--patch

这将允许你有选择性地上演帅哥。

我写了一个PowerShell脚本将会复制两个工作树和DiffMerge比较。 所以,你可以这样做:

GitNdiff master~3 .

要与当前工作树三样签入前​​比较主分支,例如。

它的光泽和新的,可能是充满了错误。 一个缺点是,但没有加入尚未在工作树文件复制出两种工作树木。 它也可以是缓慢的。

http://github.com/fschwiet/GitNdiff

对于那些有兴趣在使用Git diffall在Mac OS X与Araxis,我分叉在GitHub上的git-diffall项目,并补充说,包装的Araxis合并命令一个AppleScript。 注:这是一个稍微修改克隆araxisgitdiff文件附带Araxis合并为Mac OS X.

https://github.com/sorens/git-diffall

您可以使用gitk和看到所有在同一时间的不同

漫也有VCS的整合。 它互操作提供了数量众多的其他VCS,包括SVN,水银,集市,一...对于Git的,它甚至会显示三个窗格,如果一些但不是所有的变化都在上演。 在冲突的情况下,甚至会出现四个窗格。

混帐difftool,打开所有的差异文件立即,而不是在串行

与调用它

diffuse -m

在Git的工作副本。

如果你问我,最佳的视觉区别我看到了十年。 (我累了,MELD了。)

分类:混帐 时间:2012-01-04 人气:250
本文关键词: 混帐,difftool
分享到:

相关文章

  • 使用的Xcode 4的混帐difftool 2013-06-21

    我想使用的Xcode 4的"文本编辑"的观点作为我的Git的标准di​​fftool. 换句话说,我希望能够设置此选项: git config --global diff.external <XCODE> 而有差异的Xcode的差异观众开放(因为它很酷). 这可能吗? 怎么样? --------------解决方案------------- 可悲的是不可能的. 在这里希望苹果虽然改变的一天. 我猜你已经知道以下,但对于其他人的利益,谁可能没有,你可以使用苹果的应用程序Fil

  • 通过混帐difftool的WinMerge不断提示第二个文件 2012-04-09

    我用@ VonC出色的说明来配置我的开发系统,使git difftool <BRANCH1> <BRANCH1>将调用的WinMerge. 下面是我做的: 位于以下~/.gitconfig : [差异] tool = winmerge [difftool"的WinMerge"] cmd = winmerge.sh \"$LOCAL\" \"$REMOTE\" [difftool] prompt = false 创建一个/u

  • 为什么“混帐difftool”没有自动打开该工具? 2014-09-05

    我配置git这样的: git config --global diff.tool meld 当我运行: git difftool 我得到以下信息: Viewing: 'hello.txt' Hit return to launch 'meld': 然后,如果我按Enter键, meld窗口打开. 我怎么能禁用此消息,使meld窗口会打字后马上打开git difftool ? --------------解决方案------------- man git-difftool OPTIONS -y,

  • 是否有可能使用类似reposurgeon把一个UTF-16文件,以UTF-8的所有提交的混帐回购协议? 2012-01-22

    我有中有一个UTF-16文件中的Git仓库. 它唯一的UTF-16意外,该文件可能在7位ASCII编码,而不丢失数据. 我想使用类似reposurgeon将文件转换为UTF-8,这样git的差异将与文件旧版的工作,我没有诉诸混帐difftool. 这可能吗? --------------解决方案------------- 你为什么不只是隐蔽的文件为UTF-8和提交,例如使用: iconv -f UTF-16 -t UTF-8 input-file.txt > input-file.txt.fix

  • 混帐,Vimdiff可以和dirdiff 2012-03-07

    我试图用Vimdiff + dirdiff.vim里面使用Git versionned Vim的多个文件比较差异. 对于水银,有可能用水银extdiff延伸. 我在网上给Vim的Git的差异结合上找到的唯一方法是在单张文件用Vimdiff,因为在这个岗位描述. 任何人不会知道如何用Vimdiff + dirdiff + Git的? --------------解决方案------------- Git版本1.7.11之前 git-diffall正是我需要的,非常感谢. 有了这个网页约混帐diff

  • 使用ediff为混帐合并工具 2012-05-12

    我希望能够使用ediff与"混帐合并工具". 我发现了一些补丁修改的源代码,这是我不想做的事. 相反,我想补充ediff支持,我的.gitconfig. 我知道的git具有冒出内置支持,但我更喜欢ediff. 我试图将这些行添加到我的.gitconfig: [mergetool "ediff"] cmd = emacs --eval "(ediff-merge-files-with-ancestor \"$LOCAL\" \"

  • 无法理解Git的difftool的configs设置 2012-05-28

    我需要在我的老Git的类似设置,使用下面的内容,以便能够使用difftool. 设置是不完全一样的,因为我意外删除我的旧的.gitconfig. [merge] tool=opendiff [mergetool] tool=opendiff [difftool] difftool=opendiff 我在家里有一个空的.gitconfig. 我可以用仍是了opendiff - 工具. 这是一个惊喜,因为它应该是不可能的. 如何Git的difftool设置内部工作? --------------解决

  • .gitattributes没有发挥作用,努力用git difftool时跳过的文件 2012-07-27

    我读过Git的专业网站,我读过关于StackOverflow的多个答案,但可悲的是,我根本无法让.gitattributes为我工作. 每当我使用git difftool ,它将试图显示二进制数据,如图像文件(PNG)之间的差异. 我已经尝试了多种组合在我.gitattributes文件,但每当我跑我git difftool命令,它仍试图以比较的二进制文件. 在我的版本库的文件夹中,我有: git的 .gitattributes [我的项目的文件子目录] 我已经试过的过滤器组合多为我.gitat

  • Git和DiffTool问题:什么做本地和远程点? 2012-10-05

    我一直努力让TortoiseMerge中与当前显示我的.gitconfig文件中的Git的difftool选项工作: [diff] tool = tortoise [difftool "tortoise"] cmd = tortoisemerge.exe -mine:$LOCAL -base:$REMOTE [difftool] prompt = false 据龟合并文档的"我的"命令状态的文件将在右边显示,在两路差异. 我的问题是,什么是由GIT提供实际指向本地和

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.396 (s). 10 q(s)