如何在特定目录上“ git diff”?


Answers:


125

提供路径(在这种情况下为myfolder),然后运行:

git diff myfolder/

28
我想使用git diff -- myfoldergit来减少歧义。git diff(和许多git命令)的通用表示法是git diff [commit-ish] -- [path]commit-ish默认为HEAD(您现在所在的位置),[path]默认为git根目录,但可以是相对于当前目录的任何东西。如果没有--,git将会猜测您的意思,[commit-ish]或者[path]。在某些情况下,这会使git表示该符号“模棱两可”。如果我没记错的话。
L0LN1NJ4 2014年

2
当我尝试答案中的方法和注释中的方法时,这不会打印任何内容。
射线

@ray,这意味着您在工作树和最新提交之间没有区别
valerij vasilcenko

3
对于@ray和将来的个人,您可以git diff master..develop myfolder/按照@CrandellWS在原始问题的评论中所说的那样,包括要尝试区分的分支。如果您正在寻找Git状态,它将显示您的更改。
BVBA加速

2
@ray确保您位于根目录下。该路径将相对于您当前的目录。
Nickofthyme,

59

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

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

或从本地分支到远程:

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

29
列出两个分支后仅需一个-子句,例如:git diff branch1 branch2-path / to / dir
emery

4

您应该养成查看此类文档的习惯。这非常有用,可以很快提高您的技能。这是您要做的相关事项git help diff

   git diff [options] [--no-index] [--] <path> <path>

这两个<path>是您需要更改的目录的位置。


3

在Git中将Beyond Compare添加为difftool,并为diffdir添加别名为:

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

获取gitdiff为:

git diffdir 4bc7ba80edf6  7f566710c7

参考: 比较整个目录w git difftool +超越比较


1
git 2.17.1的等号似乎是错误的。使用git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"替代
马克·舍费尔

请注意,将Beyond Compare用于dir diff时,您需要将其配置为遵循符号链接(在文件夹Compare视图->规则(裁判图标)->处理->遵循符号链接),或者添加--no-symlinks选项,以便命令读取git difftool --dir-diff --no-symlinks
阿舒托什·金达尔

1

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

git -C a/folder diff --relative

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

参见Laurent Arnoud()的commit c28ded8(2020年5月22日(通过合并JUNIOÇ滨野- -提交e34df9a,2020年6月2日)spk
gitster

diff:添加配置选项 relative

签字人:Laurent Arnoud
签字人:ĐoànTrầnCôngDanh

diff.relative设置为的布尔选项true仅显示pathrelative选项的参数指定的当前目录/值中的更改,并显示相对于上述目录的路径名。

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

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

文档现在包括

diff.relative

如果设置为“ true”,则“ git diff”不会显示目录外部的更改,也不会显示相对于当前目录的路径名。



0

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

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

在此处输入图片说明

然后,启用跟随符号链接并更新会话默认值:

在此处输入图片说明


要么,

像这样设置别名:

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.