git diff实际上在所有源代码上运行了一个diff,如何在某个目录上执行此操作,以便我可以查看对其下的文件的修改。
答案 0 :(得分:89)
提供路径(在本例中为myfolder)并运行:
git diff myfolder/
答案 1 :(得分:37)
如果您要比较不同的分支,则需要使用--
将git修订版与文件系统路径分开。例如,有两个本地分支master
和bryan-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
答案 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 c28ded8的Laurent 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
--no-relative
:如果设置为'
diff.relative
','true
'不会显示目录之外的更改,也不会显示相对于当前目录的路径名。
答案 6 :(得分:0)
要将Beyond Compare用作目录diff的difftool,请记住启用如下所示的符号链接:
在文件夹比较视图中->规则(裁判图标):
然后启用,请遵循符号链接并更新会话默认设置:
或者, 像这样设置别名:
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/