3 回答
TA贡献2021条经验 获得超8个赞
从gitv1.7.11 开始,您可以git difftool --dir-diff用来执行目录差异。
例如,此功能与Meld 3.14.2配合使用,可以浏览所有修改的文件:
git difftool --dir-diff --tool=meld HEAD~ HEAD
这是一个方便的Bash函数:
git-diff-meld() (
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列表上提供的示例。
TA贡献1824条经验 获得超5个赞
这就是我所决定的...
将以下代码复制到一个名为git-diffall(无扩展名)的文件中:
#!/bin/sh
git diff --name-only "$@" | while read filename; do
git difftool "$@" --no-prompt "$filename" &
done
将文件放在cmdgit install dir 的文件夹中(例如C:\Program Files (x86)\Git\cmd)
并像您一样使用git diff:
git diffall
git diffall HEAD
git diffall --cached
git diffall rev1..rev2
etc...
注意:关键是&参数,它告诉外部diff命令在后台任务中运行,以便立即处理文件。对于BeyondCompare,这将打开一个屏幕,每个文件都位于其自己的标签中。
TA贡献1848条经验 获得超10个赞
meld 具有一个巧妙的功能,如果您在源代码管理下为它提供一个目录(Git,Mercurial,Subversion,Bazaar以及其他),它将自动列出所有更改的文件,您可以双击以查看各个差异。
与IMO相比,键入meld .它并弄清楚VCS比配置VCS启动要容易得多meld。另外,无论您的项目正使用哪种VCS,您都可以使用相同的命令,如果您经常在它们之间进行切换,那将非常好。
唯一的缺点是,meld扫描更改要比从git / hg / svn传递更改慢,尽管我确定它是否足够慢而不会成为问题,但这取决于您的使用方式。
- 3 回答
- 0 关注
- 1247 浏览
添加回答
举报