限制为路径的git log不显示预期的提交

时间:2017-08-15 11:04:40

标签: git

我注意到this repository中我不理解的git行为。它可以通过以下方式克隆:

git clone "git@github.com:skript-sicherheit/skript.git"

如果您导航到终端中的文件夹images并执行git log .,则会打印出来:

commit b1703a7542ee226535a34bd3de9aed48a7f76a8d
Author: Lukas Beeck <meisterasrael@googelmail.com>
Date:   Wed Sep 7 10:37:39 2016 +0200

    Bild von Mona Lisa war verschwunden, ist wieder drin

commit 0e3ede155080a3005e6454d855e18dc0083ea01a
Author: Lukas Beeck <meisterasrael@googelmail.com>
Date:   Fri Sep 2 10:20:25 2016 +0200

    Erläuterung in Grafik eingefügt

[...]

git show b1703a7542ee226535a34bd3de9aed48a7f76a8d打印:

commit b1703a7542ee226535a34bd3de9aed48a7f76a8d
Author: Lukas Beeck <meisterasrael@googelmail.com>
Date:   Wed Sep 7 10:37:39 2016 +0200

    Bild von Mona Lisa war verschwunden, ist wieder drin

diff --git a/images/mona-lisa.jpg b/images/mona-lisa.jpg
new file mode 100644
index 0000000..f4f5583
Binary files /dev/null and b/images/mona-lisa.jpg differ

提交消息是德语:“蒙娜丽莎的形象已经消失了。又回来了。”

很明显,文件mona-lisa.jpg已由b1703a7542ee226535a34bd3de9aed48a7f76a8d更改。它甚至是唯一被它改变的文件。

但是如果你执行git log mona-lisa.jpg,这就是(整个)输出:

commit 669b00871f3dba5c43ac7d53e44f317a61b177d0
Merge: 921a31c 519cdae
Author: Lukas Beeck <meisterasrael@googelmail.com>
Date:   Fri Sep 2 15:39:00 2016 +0200

    Merge branch 'index'

为什么b1703a7542ee226535a34bd3de9aed48a7f76a8d没有出现在此命令的输出中?

2 个答案:

答案 0 :(得分:0)

我认为你应该传递文件的整个路径,如git log images / mona-lisa.jpg

答案 1 :(得分:0)

更多的评论而不是令人满意的答案,但看起来对于该存储库中的事件序列有些奇怪。我可以,情况就是这样:

master             | .. -> A -> B -> [E] (Mona Lisa) -> .. -> [H]
                   |                 /                        /
index              |     .. -> C -> D                        /  
                   |                                        /
seitenkanalgriffe  |                .. -> F (Mona Lisa) -> G 

似乎由于某种原因,Mona Lisa图像被添加到合并提交E中;我猜想当时目录中的未跟踪图像可能是偶然的,并且是错误添加的。

它似乎是故意提交的实际分支是seitenkanalgriffe分支,直到H才合并。

指定路径时git log documentation说明:

  

[ - ]&lt; path&gt; ...

     

仅显示足以解释与指定路径匹配的文件的提交。请参阅下面的历史简化   有关详细信息和其他简化模式。

     

当出现混淆时,路径可能需要以“ - &#39;”为前缀,以便将它们与选项或修订范围分开。

由于此文件历史记录中的重要提交为E,因此引入图片的提交和H未对文件进行任何更改,因此您只会看到E时正在运行git log mona-lisa.jpgE是&#34;合并分支&#39;&#39;&#34;&#34;您在问题中提到的评论。

为了进一步混淆,如果您使用git log --follow images/mona-lisa.jpg,则只会看到提交H,因为默认情况下它不会在合并中跟踪文件。您必须运行git log --follow -m images/mona-lisa.jpg才能看到列出的提交EH

至少,我对这里发生的事情有所了解,可能还有其他事情需要责备。

相关问题