我正在尝试重命名六个提交前以及所有后续提交中引入的目录。这些提交尚未被推送。
我尝试了什么?
git filter-branch命令mv old new,但之前提交失败,HEAD~6因为该目录不存在。git rebase -i HEAD~6编辑每个提交,但我无法使用,mv old new因为 git 锁定了文件,也无法在 Windows 资源管理器中重命名它。cp -R old new; rm -rf old; git add new但这会产生合并冲突HEAD~4。可能值得注意的是,引入此目录的提交是此分支中的第一个提交(该分支比 之前有六个提交),并且自从我分支出来以来master我还没有触及过。master
我也读过这个问题。
最好的方法是什么?
git filter-branch应该可以正常工作;mv只需通过附加 .即可使命令正常失败|| true。例如,重命名baz/为foo/bar/baz/:
git filter-branch --force --tree-filter \
'mkdir -p foo/bar; mv baz foo/bar/ || true' \
--tag-name-filter cat -- --all
Run Code Online (Sandbox Code Playgroud)