首页 > 解决方案 > 为什么 git log --diff-filter=A 不显示存储库中文件的最早版本?

问题描述

我有兴趣将 SCHED_REALTME 算法的第一个版本作为源代码树的一部分(在 3.14 版中引入 Linux)wiki。我检查了存储库并从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 

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

这个问题。我传递给的选项不是git log应该向我展示来自维基百科的提交吗?

标签: git

解决方案


维基百科页面说:

最后一个版本被合并到主线 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 -

soaab03e05e8f7e26f51dee792beddcb5cca9215a5显然比a0fa1dd3cdbccec9597fe53b6177a9aa6e20f2f8. 还

git merge-base aab03e05e8f7e26f51dee792beddcb5cca9215a5 a0fa1dd3cdbccec9597fe53b6177a9aa6e20f2f8

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

aab03e05e8f7e26f51dee792beddcb5cca9215a5

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

结论

git log --diff-filter=A做你期望它做的事情:)


推荐阅读