如果我在不更改其内容的情况下复制文件,无论我指定哪个-Cxxx%
,git log --follow
都将始终遵循复制源。如何防止 Git 完全遵循副本,但仍遵循重命名?
整个存储库的示例日志显示了在提交53d9862f
中添加filec.txt
:
$ git log --format=oneline --stat
e26820a3a80f1f85248cf0c5865a772546022324 modification 4
filec.txt | 1 +
1 file changed, 1 insertion(+)
05ac468e19fbf382a0ff4aff1501d0d1b5217ea2 modification 3
filec.txt | 1 +
1 file changed, 1 insertion(+)
a4cf5e076055399aa4a97bec61e1be7e972a905f other change
other.txt | 3 +++
1 file changed, 3 insertions(+)
53d9862f8e244497c4d0dfd8b6ada9dce45b6e33 copy
filec.txt | 5 +++++
1 file changed, 5 insertions(+)
ddd9b8d4cd8c22f9a673084c94eeec97c4d51542 modification 2
file.txt | 1 +
1 file changed, 1 insertion(+)
af8be46361c349b261e649920d1b28efdcad542d modification 1
file.txt | 1 +
1 file changed, 1 insertion(+)
c225a05105840dd348433cde65d4ba650a6cbb04 initial import
file.txt | 3 +++
1 file changed, 3 insertions(+)
文件日志显示过去53d9862f
不应该执行的历史记录:
$ git log --format=oneline --follow filec.txt
e26820a3a80f1f85248cf0c5865a772546022324 modification 4
05ac468e19fbf382a0ff4aff1501d0d1b5217ea2 modification 3
53d9862f8e244497c4d0dfd8b6ada9dce45b6e33 copy
ddd9b8d4cd8c22f9a673084c94eeec97c4d51542 modification 2
af8be46361c349b261e649920d1b28efdcad542d modification 1
c225a05105840dd348433cde65d4ba650a6cbb04 initial import
事实证明,没有直接的方法可以解决这个问题,因为它是在 Git 源代码中硬编码的(至少到 Git 2.13 为止(。
作为一种解决方法,您可以从 Git 切换到另一个文件的提交之前重新启动git log --follow
。 在您的示例中,在提交53d9862f8e244497c4d0dfd8b6ada9dce45b6e33
git log --format=oneline --follow filec.txt
开关后,您可以运行 git log --oneline --follow filec.txt 53d9862f8e244497c4d0dfd8b6ada9dce45b6e33^
,例如。 这有点痛苦,在我看来,应该有一种方法可以让git log --follow
不遵循副本,但没有。