任务是输出在origin/1.5.0
分支的最后5次提交中已更改的文件。
如果没有分支要求,我想出了:git diff --name-only HEAD~5
。根据分支要求,我尝试git diff --name-only HEAD~5 --first-parent origin/1.5.0
,但输出更长。添加条件不应该产生更多结果,这意味着我不理解的东西。我哪里出错?
答案 0 :(得分:3)
git diff
命令总是 1 比较两个提交或文件树。 选项和参数选择哪个两个(以及如何进行差异,例如,--name-only
或--name-status
跳过差异的补丁部分)
如果您运行git diff HEAD~5
,则您选择的两件事是:
HEAD~5
:从HEAD
,当前提交为了进行比较,如果您运行git diff --cached HEAD~5
,则选择HEAD~5
和当前索引,如果您运行git diff HEAD~10 HEAD~5
,则选择{{1} }和HEAD~10
。
请注意,HEAD~5
语法来自gitrevisions。后跟整数的波形符后缀可以应用于任何其他提交选择器,例如原始哈希ID,名称~number
,您自己的分支或标记之一的名称,或者您的任何名称< em>远程跟踪分支。由于HEAD
是远程跟踪分支的名称,因此您可以使用它来指定该名称指向的提交,或者添加波形符和数字以从该点移回许多第一父步骤。
因此:
origin/1.5.0
将比较两个指定的提交,仅显示这两个提交中不相同的文件的名称。
1 你可以在一些有趣的案例中使它表现得不同,但它们不是我们在这里关心的。
答案 1 :(得分:0)
我认为使用“origin / 1.5.0”,命令改为将HEAD~5与分支原点/ 1.5.0进行比较。与没有分支相比,这是一个非常不同的差异。