git diff在分支的x提交中更改了文件

时间:2017-05-23 02:06:10

标签: git branch diff

任务是输出在origin/1.5.0分支的最后5次提交中已更改的文件。

如果没有分支要求,我想出了:git diff --name-only HEAD~5。根据分支要求,我尝试git diff --name-only HEAD~5 --first-parent origin/1.5.0,但输出更长。添加条件不应该产生更多结果,这意味着我不理解的东西。我哪里出错?

2 个答案:

答案 0 :(得分:3)

git diff命令总是 1 比较两个提交或文件树。 选项和参数选择哪个两个(以及如何进行差异,例如,--name-only--name-status跳过差异的补丁部分)

如果您运行git diff HEAD~5,则您选择的两件事是:

  1. HEAD~5:从HEAD,当前提交
  2. 返回五步
  3. 当前的工作树
  4. 为了进行比较,如果您运行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进行比较。与没有分支相比,这是一个非常不同的差异。