如何将git仓库的一部分推到另一个仓库?
问题描述:
我在私人回购项目中有一个私人项目,将它作为单个项目保存起来非常方便。这种方式很容易在没有任何特殊命令的情况下使用IDE进行工作。如何将git仓库的一部分推到另一个仓库?
但我也想在github上发布它的一部分,并且有时会更新公共版本。我怎样才能使一个repo子目录A的顶级目录库的回购目录,并仍然有所有的标准命令适用于整个回购A?
答
大概子模块/子树是做到这一点的最好办法,而只是提供了(有点令人费解)替代:
- 通过
git filter-branch --subdirectory-filter
(注提取repoA的subfolderB到一个新的,独立的repoB那filter-branch
重写回购,所以你应该做它的repoA)的单独副本 - 继续repoA工作作为首要回购
- 通过
git remote add repoA ...
添加repoA作为repoB的远程
- repoA的偶尔变化可以通过
git fetch repoA; git cherry-pick ...
樱桃采摘到repoB。 Git的可以管理这个即使两个回购的文件结构不匹配(一切都应该罚款,只要你想反向移植到repoB在repoA的提交是独立于subfolderB
)
看看[git的子树( https://www.atlassian.com/blog/git/alternatives-to-git-submodule-git-subtree)是你正在寻找的。 –
我正在使用''git subrepo''。替代方法是''git subtree''和''git submodule'',但是我的研究表明''subrepo''在这一点上最容易使用。 – Muposat
[将子目录分离(移动)到单独的Git存储库中]可能的重复(https://stackoverflow.com/questions/359424/detach-move-subdirectory-into-separate-git-repository) – phd