默认的git diff行为是以串行方式打开每个diff文件(等待先前文件在打开下一个文件之前关闭).
我正在寻找一种方法来同时打开所有文件 - 例如,在BeyondCompare中,这将打开同一BC窗口中选项卡中的所有文件.
这样可以更轻松地查看一组复杂的变化; 在diff文件之间向后和向前翻转并忽略不重要的文件.
Tim*_*gan 204
从gitv1.7.11 开始,您可以使用它git difftool --dir-diff来执行目录差异.
例如,此功能适用于Meld 3.14.2,并允许您浏览所有已修改的文件:
git difftool --dir-diff --tool=meld HEAD~ HEAD
Run Code Online (Sandbox Code Playgroud)
这是一个方便的Bash功能:
git-diff-meld() (
git difftool --dir-diff --tool=meld "${1:-HEAD~}" "${2:-HEAD}"
)
Run Code Online (Sandbox Code Playgroud)
以下答案适用于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列表中提供的示例.
Seb*_*rth 60
这就是我所确定的......
将以下代码复制到名为git-diffall(无扩展名)的文件中:
#!/bin/sh
git diff --name-only "$@" | while read filename; do
git difftool "$@" --no-prompt "$filename" &
done
Run Code Online (Sandbox Code Playgroud)
将文件放在cmdgit install目录的文件夹中(例如C:\Program Files (x86)\Git\cmd)
像你一样使用git diff:
git diffall
git diffall HEAD
git diffall --cached
git diffall rev1..rev2
etc...
Run Code Online (Sandbox Code Playgroud)
注意:它的关键是& param,它告诉外部diff命令在后台任务中运行,以便立即处理文件.在BeyondCompare的情况下,这将打开一个屏幕,每个文件都在其自己的选项卡中.
Tom*_*Tom 18
meld 有一个简洁的功能,如果您在源代码管理下给它一个目录(Git,Mercurial,Subversion,Bazaar和其他可能),它将自动列出所有已更改的文件,您可以双击查看个别差异.
IMO它更容易输入meld .并让它弄清楚VCS而不是配置你的VCS启动meld.另外,无论您的项目使用什么VCS,您都可以使用相同的命令,如果您在它们之间进行大量切换,那就太棒了.
唯一的缺点是,扫描变化的速度要慢于传递git/hg/svn的变化,但是它是否足够缓慢是一个问题将取决于你如何使用它我敢肯定.
| 归档时间: |
|
| 查看次数: |
51396 次 |
| 最近记录: |