是否有可能使用Git的工具将文件移动到新的文件夹,同时修改其完整的历史记录,就好像文件是从他们的第一次添加?
我想出了这个并购一些回购在一起后,我搬到从几个回购到不同的文件夹里面的文件一个"超级"回购,但合并后的历史表现非常糟糕与git rebase和git svn工具完全不同的文件可能会在自己的老位置,当然碰撞.
所以现在这完成了工作:
git filter-branch --tree-filter '(ls -A; mkdir TheSubdir; echo TheSubdir) | xargs mv'
奇怪但很好:.git目录停留在应有的位置; 也许git以某种方式阻止它的运动?
要修改完整的历史记录,您需要重写每次提交.git filter-branch是最好的方法.特别是,对于您的情况,git filter-branch --tree-filter some-command将检查您的历史记录的每个版本,运行您可以根据需要修改工作树的命令(例如移动有问题的目录),然后重写该提交以包含新的树的内容.