我使用git mv
,used 和重命名了几个文件,git stash
快速浏览了HEAD(不进行更改),然后又git stash pop
重新取回了很多文件。我的举动已从提交列表中消失,因此我用它们进行git rm
了重新命名,并且提交消息声称git发现该重命名为重命名。所以我不再想了。
但是现在,提交后,我无法了解已移动文件的历史记录!这是git关于相关提交的内容:
~/projects% git log --summary
commit de6e9fa2179ae17ec35a5c368d246f19da27f93a
Author: brone
Date: Wed Dec 8 22:37:54 2010 +0000
Moved R_DebugUI into runtime
delete mode 100644 test/R_DebugUI_iOS.h
delete mode 100644 test/R_DebugUI_iOS.m
create mode 100644 system/runtime/src/R_DebugUI_iOS.h
create mode 100644 system/runtime/src/R_DebugUI_iOS.m
<<snip older commits>>
~/projects%
我现在正在尝试获取这些移动文件之一的历史记录,因此我可以查看一个旧版本,但是却没有任何有用的东西:
~/projects/system/runtime/src% git log --follow --find-copies-harder -M -C R_DebugUI_iOS.m
commit de6e9fa2179ae17ec35a5c368d246f19da27f93a
Author: brone
Date: Wed Dec 8 22:37:54 2010 +0000
Moved R_DebugUI into runtime
~/projects/system/runtime/src%
(我也尝试了不使用-M
,-C
和--find-copies-harder
,但无济于事。)
我可以使用其旧名称获取其历史记录,该历史记录将从其旧位置删除的那一点停止:
~/projects% git log --summary --follow --find-copies-harder -M -C -- test/R_DebugUI_iOS.m
commit de6e9fa2179ae17ec35a5c368d246f19da27f93a
Author: brone
Date: Wed Dec 8 22:37:54 2010 +0000
Moved R_DebugUI into runtime
delete mode 100644 test/R_DebugUI_iOS.m
commit 32a22d53c27e260714f759ecb3d3864e38b2e87f
Author: brone
Date: Tue Dec 7 23:52:51 2010 +0000
Can set debug UI's alpha.
<<snip older commits>>
~/projects%
因此,这次我并没有完全陷入困境,但是我不想一直都在做这种事情。(我预计会有相当数量的文件在它们的生命中至少会移动一次。)
难道我做错了什么?文件的旧副本和新副本相同,为98.8%(更改166中的2行)。我的理解是,在这种情况下git应该能够跟踪文件,因为git会推断出重命名操作而不是显式存储它们,并且文件足够相似,我认为它应该认为它们相同。
有什么我可以解决的吗?