我如何在某个目录上git diff

时间:2011-12-05 07:09:40

标签: git

git diff实际上在所有源代码上运行了一个diff,如何在某个目录上执行此操作,以便我可以查看对其下的文件的修改。

9 个答案:

答案 0 :(得分:89)

提供路径(在本例中为myfolder)并运行:

git diff myfolder/

答案 1 :(得分:37)

如果您要比较不同的分支,则需要使用--将git修订版与文件系统路径分开。例如,有两个本地分支masterbryan-working

$ git diff master -- AFolderOfCode/ bryan-working -- AFolderOfCode/

或从本地分支到远程:

$ git diff master -- AFolderOfCode/ origin/master -- AFolderOfCode/

答案 2 :(得分:5)

你应该养成查看文档的习惯。它非常有用,可以很快提高你的技能。执行git help diff

时,这是相关位
   git diff [options] [--no-index] [--] <path> <path>

这两个<path>是您需要更改为相关目录的内容。

答案 3 :(得分:2)

将Beyond Compare添加为git中的difftool,并将diffdir的别名添加为:

git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"

获取gitdiff:

git diffdir 4bc7ba80edf6  7f566710c7

参见: https://truncatedcodr.wordpress.com/2014/09/20/compare-entire-directories-w-git-difftool-beyond-compare/

答案 4 :(得分:2)

我要找的是这个:

git diff <ref1>..<ref2> <dirname>

答案 5 :(得分:1)

不仅可以添加路径,还可以添加git diff --relative以获得相对于该文件夹的结果。

git -C a/folder diff --relative

在Git 2.28(2020年第三季度)中,“ diff”系列中的命令学会了使用“ diff.relative”配置变量。

请参见commit c28ded8Laurent Arnoud (spk)(2020年5月22日)。
(由Junio C Hamano -- gitster --commit e34df9a中合并,2020年6月2日)

diff:添加配置选项relative

签名人:Laurent Arnoud
Acked-by:ĐoànTrầnCôngDanh

设置为{{1}的diff.relative布尔选项将仅显示true选项的path参数指定的当前目录/值中的更改,并显示相对于上面的目录。

教导relative以覆盖更早的--no-relative

添加git-format-patch(1)选项文档--relative--relative

documentation now includes

--no-relative

如果设置为'diff.relative','true'不会显示目录之外的更改,也不会显示相对于当前目录的路径名。

答案 6 :(得分:0)

要将Beyond Compare用作目录diff的difftool,请记住启用如下所示的符号链接:

在文件夹比较视图中->规则(裁判图标):

enter image description here

然后启用,请遵循符号链接并更新会话默认设置:

enter image description here


或者, 像这样设置别名:

git config --global alias.diffdir "difftool --dir-diff --tool=bc3 --no-prompt --no-symlinks"

请注意,无论哪种情况,都将保留对引用当前工作树的一侧(左侧或右侧)所做的任何编辑。

答案 7 :(得分:0)

如果要排除子目录,可以使用

git diff <ref1>..<ref2> -- $(git diff <ref1>..<ref2> --name-only | grep -v /)

答案 8 :(得分:0)

如果您安装并配置了差异工具(例如:kdiff3

git difftool -d  branch1 branch2 /path/to/dir/