如何解决Git:也在历史中移动文件
| Git的工具是否可以在修改其完整历史记录的同时将文件移动到新文件夹中,就像文件是从第一次添加时就已经存在过一样? 在合并一些存储库之后,我想到了这一点:我将文件从几个存储库移到一个\“ super \”存储库中的不同文件夹中,但是合并历史在git rebase
和git svn
工具的表现非常糟糕,因为完全不同的文件可能会碰撞它们当然是旧位置。
解决方法
现在完成了工作:
git filter-branch --tree-filter \'(ls -A; mkdir TheSubdir; echo TheSubdir) | xargs mv\'
奇怪但很好:.git目录停留在应有的位置;也许git以某种方式阻止了它的移动?
,为了修改您的完整历史记录,您将需要重写每个提交。 git filter-branch
是执行此操作的最佳方法。特别地,对于您的情况,ѭ4将签出历史记录的每个版本,运行您可以在其中修改您认为合适的工作树的命令(例如,移动有问题的目录),然后重写该提交以包含以下内容:树的新内容。
,对于包含空格等的文件/目录,接受的答案中的命令将失败。以下版本是安全的:
git filter-branch -f --tree-filter \'mkdir TheSubdir; \\
find . -maxdepth 1 -name TheSubdir -prune -o -name . -true -o -print0 | \\
xargs -0 mv -t TheSubdir\'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。