我的项目有几个错误的命名文件。我想重命名它们。我试着用:
git mv nameA nameB
git commit
重命名后,我发现必须使用:
git log --follow nameB
查看文件的历史记录。并且git blame nameB
丢失了每一行的原始信息,现在每行都有最后一次提交ID。
我想知道是否有方法可以重命名文件但保留文件的所有历史记录,包括git log
和git blame
。
答案 0 :(得分:1)
我发现你遇到了类似的问题,用户无法使用git blame
命令获得正确的输出。然后他尝试了
git blame -C -C filename
并获得正确的输出。
我想你可能想看看这个讨论。 git blame --follow 。 希望有所帮助。
答案 1 :(得分:1)
看起来你真的想要在整个历史记录中更改文件名,即它看起来应该看起来好像没有那个坏名字。
在这种情况下,您可以使用以下内容:
git filter-branch --tree-filter 'git mv oldname newname' -- --all
请注意git filter-branch
是一个非常强大的工具。确保您拥有存储库的备份,以防您真正破坏某些内容。另请注意,如果您已经发布了存储库,这可能是一个坏主意。在其他文件中可能还会对旧名称进行一些逻辑引用,这可能会使旧提交无法构建。
如果你已经发布了你的存储库,你可能应该做一个简单的git mv
,在历史记录中使用错误名称,并使用git的重命名检测机制,如另一个答案中所示。