我使用git mv
重命名了一些文件,然后使用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应该能够在这种情况下跟踪文件,因为它推断重命名操作而不是显式存储它们,并且这些文件非常相似,我认为它应该将它们视为相同的文件。
我有什么办法可以解决这个问题吗?
/projects/而不是/projects/system/runtime/src内执行该命令,是否有效? - Douglas