繁体   English   中英

为 Git 存储库中的所有提交重命名文件

[英]Rename file for all commits in a Git repository

我想为 Git 存储库中的所有提交重命名一个文件。 这是我尝试过的:

git filter-branch --index-filter 'git mv -k <old name> <new name>' HEAD

此命令遍历存储库中的所有提交,但最终显示以下消息:

警告:Ref 'refs/heads/master' 未更改

这意味着什么都没有改变。 这里出了什么问题?

请注意,我想要重命名的文件在第一次提交时不存在。 因此,如果我不在git mv中使用-k ,我的意思是如果我使用:

git filter-branch --index-filter 'git mv <old name> <new name>' HEAD`

Git 在尝试第一次提交时会出错,说“错误的来源...”。

我终于通过使用解决了我原来的问题:

git filter-branch --tree-filter '
if [ -f <old name> ]; then
  mv <old name> <new name>
fi' --force HEAD

现在最好使用filter-repo - https://github.com/newren/git-filter-repo

git filter-repo --path-rename full/path/to/file.old:full/path/to/file.new

看我自己的博客页面: http://ben.goodacre.name/tech/Rename-file-for-all-previous-commits-in-Git

对于任何对重命名文件感兴趣的人 - git rebase -i将工作得很好。 在 rebase 中包含创建文件的提交,用edit标记它,然后重命名文件。 Git 会正确地将下一次提交应用到这个文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM