我知道我可以从 git 存储库的目录中创建一个新的存储库。看这里:https://help.github.com/articles/splitting-a-subfolder-out-into-a-new-repository/ https://help.github.com/articles/splitting-a-subfolder-out-into-a-new-repository/
但是,如何将一个目录从一个存储库复制到另一个完全不同的存储库的新目录,同时保留该目录的历史记录?
更新:该历史记录是否可以通过 git log 显示?
你可以这样做git filter-branch
。基本上你想要:
- 使用您已经找到的链接将第一个项目中的子路径拆分到新存储库中。
- 将其推送到唯一分支上的第二个项目的远程位置。
-
将该分支提取到第二个存储库中,然后使用git filter-branch
将其索引过滤到正确的子目录中:
git filter-branch --index-filter '
git ls-files -sz |
perl -0pe "s{\t}{\tnewsubdir/}" |
GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
git update-index --clear -z --index-info &&
mv "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE"
' HEAD
最后,检查一下master
第二个项目的分支(或您正在使用的任何分支),然后合并到新过滤的分支中。
总而言之,这确实不算太糟糕的手术。正如 AlexanderGladysh 在评论中指出的那样,您还可以使用子树合并策略 http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html代替步骤 3 和 4。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)