我想为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会在尝试第一次提交“错误”时出错 来源......“。
答案 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将适用下一次正确提交到这个文件。