git diff 在分支的 x 提交中更改了文件
git diff changed files in x commits of a branch
任务是输出在 origin/1.5.0
分支的最后 5 次提交中更改的文件。
没有分支要求我想出了:git diff --name-only HEAD~5
。根据分支要求,我尝试了 git diff --name-only HEAD~5 --first-parent origin/1.5.0
但输出更长。添加条件不应产生更多结果,这意味着有些事情我不明白。我哪里做错了?
我认为在 "origin/1.5.0" 中,命令更改为将 HEAD~5 与分支 origin/1.5.0 进行比较。这与没有分支的差异很大。
git diff
命令总是1 比较两个提交或文件树。 选项和参数 select 其中两个(以及如何进行差异,例如--name-only
或--name-status
跳过 diff 的补丁部分)。
如果您 运行 git diff HEAD~5
,您 select 编辑的两件事是:
HEAD~5
:从HEAD
后退五步的提交,当前提交
- 当前工作树
为了比较,如果你 运行 git diff --cached HEAD~5
,你 select 而不是 HEAD~5
和当前 index,如果你 运行 git diff HEAD~10 HEAD~5
你 select 而不是 HEAD~10
和 HEAD~5
.
请注意 ~<em>number</em>
语法来自 gitrevisions。后跟整数的波浪号后缀可以应用于任何其他提交 select 或者,例如原始哈希 ID、名称 HEAD
、您自己的分支或标签之一的名称,或名称您的任何 远程跟踪分支 。由于 origin/1.5.0
是远程跟踪分支的名称,您可以使用它来指定该名称指向的提交,或者添加波浪号和数字以从该点向后移动那么多的第一父步骤。
因此:
git diff --name-only origin/1.5.0~5 origin/1.5.0
将比较两个指定的提交,只显示在这两个提交中不相同的文件名。
1你可以让它在一些有趣的情况下表现得不同,但它们不是我们在这里关心的。
任务是输出在 origin/1.5.0
分支的最后 5 次提交中更改的文件。
没有分支要求我想出了:git diff --name-only HEAD~5
。根据分支要求,我尝试了 git diff --name-only HEAD~5 --first-parent origin/1.5.0
但输出更长。添加条件不应产生更多结果,这意味着有些事情我不明白。我哪里做错了?
我认为在 "origin/1.5.0" 中,命令更改为将 HEAD~5 与分支 origin/1.5.0 进行比较。这与没有分支的差异很大。
git diff
命令总是1 比较两个提交或文件树。 选项和参数 select 其中两个(以及如何进行差异,例如--name-only
或--name-status
跳过 diff 的补丁部分)。
如果您 运行 git diff HEAD~5
,您 select 编辑的两件事是:
HEAD~5
:从HEAD
后退五步的提交,当前提交- 当前工作树
为了比较,如果你 运行 git diff --cached HEAD~5
,你 select 而不是 HEAD~5
和当前 index,如果你 运行 git diff HEAD~10 HEAD~5
你 select 而不是 HEAD~10
和 HEAD~5
.
请注意 ~<em>number</em>
语法来自 gitrevisions。后跟整数的波浪号后缀可以应用于任何其他提交 select 或者,例如原始哈希 ID、名称 HEAD
、您自己的分支或标签之一的名称,或名称您的任何 远程跟踪分支 。由于 origin/1.5.0
是远程跟踪分支的名称,您可以使用它来指定该名称指向的提交,或者添加波浪号和数字以从该点向后移动那么多的第一父步骤。
因此:
git diff --name-only origin/1.5.0~5 origin/1.5.0
将比较两个指定的提交,只显示在这两个提交中不相同的文件名。
1你可以让它在一些有趣的情况下表现得不同,但它们不是我们在这里关心的。