我知道我可以从git存储库的目录中创建一个新的存储库。看到这里:https://help.github.com/articles/splitting-a-subfolder-out-into-a-new-repository/如何将一个目录从一个git存储库复制到另一个,保存历史记录?
但是,如何将一个目录从一个存储库复制到另一个完全不同的存储库的新目录,同时保留该目录的历史记录?
更新:是否有可能使历史与git日志显示?
我知道我可以从git存储库的目录中创建一个新的存储库。看到这里:https://help.github.com/articles/splitting-a-subfolder-out-into-a-new-repository/如何将一个目录从一个git存储库复制到另一个,保存历史记录?
但是,如何将一个目录从一个存储库复制到另一个完全不同的存储库的新目录,同时保留该目录的历史记录?
更新:是否有可能使历史与git日志显示?
你可以用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在评论中指出的,您也可以在步骤3和步骤4中使用subtree merging strategy。
难道你不能使用子树合并策略而不是步骤3和4? –
@AlexanderGladysh是的。你可以用子树合并策略来完成。我相应地编辑了答案。 – Christopher
嗯。我决定采用子树合并策略。一个问题是,git登录该目录只显示最后的合并提交不是整个历史:(这是预期的吗? – namin
GitHub url现在是:https://help.github.com/articles/splitting-a-subpath-out- into-a-new-repository –