如何将git仓库的一部分推到另一个仓库?

问题描述:

我在私人回购项目中有一个私人项目,将它作为单个项目保存起来非常方便。这种方式很容易在没有任何特殊命令的情况下使用IDE进行工作。如何将git仓库的一部分推到另一个仓库?

但我也想在github上发布它的一部分,并且有时会更新公共版本。我怎样才能使一个repo子目录A的顶级目录库的回购目录,并仍然有所有的标准命令适用于整个回购A?

+0

看看[git的子树( https://www.atlassian.com/blog/git/alternatives-to-git-submodule-git-subtree)是你正在寻找的。 –

+0

我正在使用''git subrepo''。替代方法是''git subtree''和''git submodule'',但是我的研究表明''subrepo''在这一点上最容易使用。 – Muposat

+0

[将子目录分离(移动)到单独的Git存储库中]可能的重复(https://stackoverflow.com/questions/359424/detach-move-subdirectory-into-separate-git-repository) – phd

大概子模块/子树是做到这一点的最好办法,而只是提供了(有点令人费解)替代:

  • 通过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