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

时间:2012-02-25 18:18:03

标签: git

我想为git存储库中的所有提交重命名文件,这就是我的意思 尝试过:

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

这个命令经历了存储库中的所有提交但最终结束了 消息

  

警告:参考'refs / heads / master'保持不变

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

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

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

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

2 个答案:

答案 0 :(得分:20)

我终于通过使用:

解决了我原来的问题
git filter-branch --tree-filter '
if [ -f <old name> ]; then
  mv <old name> <new name>
fi' --force HEAD

答案 1 :(得分:1)

对于只想重命名文件的任何人 - git rebase -i都可以正常工作 - 包括在rebase中创建文件的提交,用edit标记并只重命名文件,git将适用下一次正确提交到这个文件。