git日志限制为路径不';不显示预期的提交

git日志限制为路径不';不显示预期的提交,git,Git,我注意到git的行为,但我不理解。可通过以下方式进行克隆: git clone "git@github.com:skript-sicherheit/skript.git" 如果您导航到终端中的文件夹images,并执行git log.,它将打印以下内容: commit b1703a7542ee226535a34bd3de9aed48a7f76a8d Author: Lukas Beeck <meisterasrael@googelmail.com> Date: Wed Sep

我注意到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

[...]
提交信息是德语,意思是:“蒙娜丽莎的形象消失了,又回来了。”

显然,文件
mona lisa.jpg
b1703a7542ee226535a34bd3de9aed48a7f76a8d
更改。它甚至是它更改的唯一文件

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

提交669b00871f3dba5c43ac7d53e44f317a61b177d0
合并:921a31c 519cdae
作者:卢卡斯·比克
日期:2016年9月2日星期五15:39:00+0200
合并分支“索引”

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

我认为你应该像git log images/mona-lisa.jpg那样传递文件的整个路径,与其说是一个令人满意的答案,不如说是一个注释,但这个存储库中的事件序列似乎有些奇怪。据我所知,情况如下:

master             | .. -> A -> B -> [E] (Mona Lisa) -> .. -> [H]
                   |                 /                        /
index              |     .. -> C -> D                        /  
                   |                                        /
seitenkanalgriffe  |                .. -> F (Mona Lisa) -> G 
似乎出于某种原因,蒙娜丽莎图像被添加到合并提交
E
;我猜可能是当时未跟踪的图像意外地出现在目录中,并被错误地添加了

它似乎有意提交的实际分支是
seitenkanalgriffe
分支,它在
H
之前不会合并

指定路径时的状态为:

[--]…​

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

当出现混淆时,路径可能需要加前缀“`--”,以将其与选项或修订范围分开

由于此文件历史记录中的重要提交是
E
,引入图像的提交和
H
没有对文件进行任何更改,因此在运行
git log mona lisa.jpg
时,您只会看到
E
E
是您在问题中提到的带有“合并分支‘索引’”注释的提交

为了进一步混淆问题,如果使用git log--follow images/mona lisa.jpg,您将只看到commit
H
,因为默认情况下它不会在merges中跟随文件。您必须运行git log--follow-m images/mona lisa.jpg才能看到提交
E
H
列表


至少,就我对这里发生的事情的理解而言,可能还有其他原因。

但是,无论我询问git关于文件或目录的历史记录,在显示哪个提交方面,为什么会有区别呢。commit都不涉及目录中的任何其他内容。您似乎对映像最初是如何引入的是正确的。当硬复位到
669b0087
时,图像在那里。但当硬重设为其父级时,
921a31c9
519cdaed
,则不是。所有这些提交都来自同一个人,他似乎有意在branch
seitenkanalangriffe
中引入图像,但在将branch
index
合并到
master
中时意外引入了该图像,之后,当他选中
seitenkanalangriffe
退出时,图像就消失了。他注意到图像消失了(可能是因为文档没有生成)并再次添加了它。如何找出哪些提交涉及到了文件?我会使用
git log——根据需要使用带有标志的
,但是在
commit 669b00871f3dba5c43ac7d53e44f317a61b177d0
Merge: 921a31c 519cdae
Author: Lukas Beeck <meisterasrael@googelmail.com>
Date:   Fri Sep 2 15:39:00 2016 +0200

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