重命名整个 Git 提交历史记录中的目录

wch*_*gin 5 git git-rebase

我正在尝试重命名六个提交前以及所有后续提交中引入的目录。这些提交尚未被推送。

我尝试了什么?

  • 我尝试过使用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

我也读过这个问题

最好的方法是什么?

z0r*_*z0r 5

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)