git difftool,立即打开所有差异文件,而不是以串行方式打开

默认的git diff行为是依次打开每个diff文件(等待上一个文件关闭后再打开下一个文件)。

我正在寻找一次打开所有文件的方法-例如,在BeyondCompare中,这将打开同一BC窗口中选项卡中的所有文件。

这样可以更轻松地审查一组复杂的更改;在diff文件之间来回滑动并忽略不重要的文件。


四季花海
浏览 1128回答 3
3回答

宝慕林4294392

从gitv1.7.11 开始,您可以git difftool --dir-diff用来执行目录差异。例如,此功能与Meld 3.14.2配合使用,可以浏览所有修改的文件:git difftool --dir-diff --tool=meld HEAD~ HEAD这是一个方便的Bash函数:git-diff-meld() (&nbsp; git difftool --dir-diff --tool=meld "${1:-HEAD~}" "${2:-HEAD}")以下答案适用于git早于v1.7.11的安装。在git邮件列表上也问过同样的问题。我根据该电子邮件线程整理了一个shell脚本,该脚本在任意提交之间执行目录差异。从git v1.7.10开始,该git-diffall脚本包含在contrib标准git安装的中。对于v1.7.10之前的版本,可以从GitHub上的git-diffall项目安装。这是项目说明:git-diffall脚本为git提供了基于目录的diff机制。该脚本依靠diff.tool配置选项来确定使用哪种diff查看器。该脚本与用于指定diff修订范围的所有格式兼容:1)git diffall:显示工作树和已执行的更改之间的差异2)git diffall --cached [<commit>]:显示工作树和已更改HEAD (或其他命名的提交)之间的差异3)git diffall <commit>:显示工作树和已命名的提交之间的差异4)git diffall <commit> <commit>:显示两个命名提交之间的差异5)git diffall <commit>..<commit>:相同如上6)git diffall <commit>...<commit>:显示包含且直到第二个分支的变化,从两个分支的共同祖先开始<commit>注意:所有表格均采用可选的路径限制器 [--] [<path>]该脚本基于Thomas Rast在Git列表上提供的示例。

沧海一幻觉

这就是我所决定的...将以下代码复制到一个名为git-diffall(无扩展名)的文件中:#!/bin/shgit diff --name-only "$@" | while read filename; do&nbsp; &nbsp; git difftool "$@" --no-prompt "$filename" &done将文件放在cmdgit install dir 的文件夹中(例如C:\Program Files (x86)\Git\cmd)并像您一样使用git diff:git diffallgit diffall HEADgit diffall --cached&nbsp;git diffall rev1..rev2etc...注意:关键是&参数,它告诉外部diff命令在后台任务中运行,以便立即处理文件。对于BeyondCompare,这将打开一个屏幕,每个文件都位于其自己的标签中。

慕桂英546537

meld 具有一个巧妙的功能,如果您在源代码管理下为它提供一个目录(Git,Mercurial,Subversion,Bazaar以及其他),它将自动列出所有更改的文件,您可以双击以查看各个差异。与IMO相比,键入meld .它并弄清楚VCS比配置VCS启动要容易得多meld。另外,无论您的项目正使用哪种VCS,您都可以使用相同的命令,如果您经常在它们之间进行切换,那将非常好。唯一的缺点是,meld扫描更改要比从git / hg / svn传递更改慢,尽管我确定它是否足够慢而不会成为问题,但这取决于您的使用方式。
打开App,查看更多内容
随时随地看视频慕课网APP