为什么git log --diff-filter = A没有显示存储库中文件的最早版本?

时间:2019-12-02 16:09:44

标签: git

因此,我有兴趣将SCHED_REALTME算法的第一个版本作为源树的一部分(在3.14版中引入到Linux中)https://en.wikipedia.org/wiki/SCHED_DEADLINE。我检出了存储库,并从 master 进行了以下操作:

git log --diff-filter=A -- [path to the deadline.c file]

它向我展示了该提交:

commit aab03e05e8f7e26f51dee792beddcb5cca9215a5                                                                                   
Author: Dario Faggioli <raistlin@linux.it>                                                                                        
Date:   Thu Nov 28 11:14:43 2013 +0100 

但是在Wikipedia页面(上面的链接)上,他们说算法是在此提交a0fa1dd3cdbccec9597fe53b6177a9aa6e20f2f8中首先合并到Linux树中,而我确实能够检出此提交并查看文件。

问题。我传递给git log的选项不是应该向我显示来自Wikipedia的提交吗?

2 个答案:

答案 0 :(得分:1)

维基百科页面上显示:

  

最新版本已合并到主线Linux内核中(提交   编号a0fa1dd3cdbccec9597fe53b6177a9aa6e20f2f8 [30]),并且自   然后是它的常规部分。

所以他们没有说这是该代码的第一个介绍。这对应于两个提交的分析:

commit aab03e05e8f7e26f51dee792beddcb5cca9215a5
Author: Dario Faggioli <raistlin@linux.it>
Date:   Thu Nov 28 11:14:43 2013 +0100

commit a0fa1dd3cdbccec9597fe53b6177a9aa6e20f2f8
Merge: 9326657abe1a eaad45132c56
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Mon Jan 20 10:42:08 2014 -

因此aab03e05e8f7e26f51dee792beddcb5cca9215a5明显早于a0fa1dd3cdbccec9597fe53b6177a9aa6e20f2f8。还有

git merge-base aab03e05e8f7e26f51dee792beddcb5cca9215a5 a0fa1dd3cdbccec9597fe53b6177a9aa6e20f2f8

告诉我他们共同的祖先是什么,答案是:

aab03e05e8f7e26f51dee792beddcb5cca9215a5

所以这似乎是引入deadline.c文件的真正的祖先提交。

结论

git log --diff-filter=A完成了您期望的工作:)

答案 1 :(得分:-1)

您需要指定--all分支,可能还需要指定--follow来检测文件重命名

git log --all --follow --diff-filter=A -- [path to the deadline.c file]