我如何在某个目录上git diff

pri*_*iya 109 git

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

Geo*_*Geo 99

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

git diff myfolder/

  • 我想使用`git diff - myfolder`来减少对git的歧义.git diff(和许多git命令)的一般表示法是`git diff [commit-ish] - [path]`其中commit-ish默认为HEAD(你现在在哪里)和`[path]`默认为git根目录,但可以是与当前目录相关的任何内容.没有`--`,git会猜你的意思,`[commit-ish]`或`[path]`.在某些情况下,这会导致git说符号是"模棱两可的".如果我没记错的话. (21认同)
  • 当我在答案和评论中的方法中尝试方法时,这不会打印任何内容. (2认同)
  • 对于@ray和将来的个人,您可以像@CrandellWS在原始问题的评论中所说的那样,包括要尝试在`git diff master..develop myfolder /`之间进行区分的分支。如果您要查找的是Git状态,则会显示您的更改。 (2认同)
  • @ray 确保您位于根目录中。该路径将相对于您的当前目录。 (2认同)
  • 如果文件夹名称带有空格怎么办? (2认同)

bca*_*tle 50

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

$ git diff master -- AFolderOfCode/ bryan-working -- AFolderOfCode/
Run Code Online (Sandbox Code Playgroud)

或者从本地分支到远程:

$ git diff master -- AFolderOfCode/ origin/master -- AFolderOfCode/
Run Code Online (Sandbox Code Playgroud)

  • 列出两个分支后只需要一个 - 子句,如:git diff branch1 branch2 - path/to/dir (24认同)

Ami*_*bas 33

我正在寻找的是这样的:

git diff <ref1>..<ref2> <dirname>
Run Code Online (Sandbox Code Playgroud)


Von*_*onC 19

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

\n
git -C a/folder diff --relative\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

请参阅Laurent Arnoud ( )提交的 c28ded8(2020 年 5 月 22 日)。\n (由Junio C Hamano合并-- --提交 e34df9a中spk
gitster中,2020 年 6 月 2 日)

\n
\n

diff: 添加配置选项relative

\n

签署人: Laurent Arnoud
\n确认人: \xc4\x90o\xc3\xa0n Tr\xe1\xba\xa7n C\xc3\xb4ng Danh

\n

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

\n

--no-relative尽早覆盖--relative

\n

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

\n
\n

文档现在包括

\n
\n

diff.relative

\n

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

\n
\n
\n

警告:在 Git 2.34(2021 年第 4 季度)之前,“ git diff --relative( man )当存在未合并的路径时,

\n

请参阅\xc4\x90o\xc3\xa0n Tr\xe1\xba\xa7n C\xc3\xb4ng Danh ( )的提交 8174627(2021 年 8 月 22 日)。\n (由Junio C Hamano 合并 -- --提交 c8f4916中,2021 年 9 月 8 日)sgn
gitster

\n
\n

diff-lib:如果 --relative 询问,则忽略 $cwd 之外的路径

\n

报告人:Thomas De Zeeuw
\n测试人:Carlo Arenas
\n签署人:\xc4\x90o\xc3\xa0n Tr\xe1\xba\xa7n C\xc3\xb4ng Danh

\n
\n
\n

--relative对于 diff 系列命令,如果需要,我们可以告诉它们排除某些目录之外的更改。

\n

在 中diff_unmerge()NULL如果请求的路径位于感兴趣的目录之外,将返回,因此我们将遇到NULL指针取消引用run_diff_files取消

\n

但是,在取消引用之前检查返回值diff_unmerge是不够的。
\n因为,diff 引擎稍后将尝试在此类路径规范上工作。

\n

我们不要对那些不感兴趣的条目运行 diff。
\n作为副作用,通过这样跳过,我们可以节省一些 CPU 周期。

\n
\n


Nou*_*him 5

你应该养成查看文档的习惯.它非常有用,可以很快提高你的技能.当你这样做时,这是相关的一点git help diff

   git diff [options] [--no-index] [--] <path> <path>
Run Code Online (Sandbox Code Playgroud)

这两个<path>是你需要改变到有问题的目录.

  • 好吧,也许人们(像我一样)在这里是因为他们尝试阅读文档,但这对他们没有帮助。就我而言,更改这些“&lt;path&gt;”会使事情变得更糟:如果没有它,至少它会返回提交之间更改的所有文件的差异,但如果我更改这些文件,它不会返回任何内容。 (3认同)