8
我想在我的repo中创建一个新分支,该分支仅包含来自主文件中的特定目录的文件及其历史记录然后推送该分支到一个新的存储库。Git创建一个只包含指定目录及其历史记录的新分支,然后推送到新的存储库
...或者其他等价物 - 例如,可以在不创建分支的情况下将目录推送到新的存储库到新的存储库。
到目前为止,我认为以下方法可行,但我想知道是否有更简化的方法。
1 - 创建一个空的分支:
git symbolic-ref HEAD refs/heads/<new-branch>
rm .git/index
git clean -fdx
2 - 结帐从主目录:
git checkout master <paths> ...
git add <paths> ...
git commit
3 - 推分支到新的远程:
git push -u <remote-URL> <new-branch>
4 - 然后,在新的回购中,合并分支与主人:
git checkout -t origin/<new-branch>
git checkout master
git merge <new-branch>
git branch -d afterimage
git branch -d -r afterimage
我试图做一些相当于Detach subdirectory into separate Git repository,但没有git filter-branch
烂摊子。
......但你实际上*需要*使用'git filter-branch'来提取子目录的历史记录。没有这个,你只需要获取文件。 – 2012-04-02 05:44:16
我真的没有看到没有关注你的链接后的兴趣。按照您提出的方式进行操作,但这是蛮力,并且它不会清理您的历史或存储库数据。 – CharlesB 2012-04-02 05:55:08