如何将git回购的一部分推送到另一个回购?

如何将git回购的一部分推送到另一个回购?,git,Git,我在私人回购中有一个私人项目,将其作为单个项目保存非常方便。这样,使用IDE就可以轻松地处理它,而无需任何特殊命令 但我也希望在github上发布其中的一些内容,并有时更新公共版本。如何使repo A的一个子目录成为repo B的顶级目录,并且仍然将所有标准命令应用于整个repo A?可能子模块/子树是最好的方法,但只是提供一个(有些复杂的)替代方法: 通过git filter branch--subdirectory filter(注意filter branch重写repo,因此您应该在re

我在私人回购中有一个私人项目,将其作为单个项目保存非常方便。这样,使用IDE就可以轻松地处理它,而无需任何特殊命令


但我也希望在github上发布其中的一些内容,并有时更新公共版本。如何使repo A的一个子目录成为repo B的顶级目录,并且仍然将所有标准命令应用于整个repo A?

可能子模块/子树是最好的方法,但只是提供一个(有些复杂的)替代方法:

  • 通过
    git filter branch--subdirectory filter
    (注意
    filter branch
    重写repo,因此您应该在repoA的单独副本上执行此操作)将repoA的子文件夹b提取到新的独立repoB中
  • 继续将回购协议作为主要回购协议
  • 通过git remote Add repoA…
  • repoA中偶尔的变化可以通过
    git-fetch-repoA直接提交给repoB;git cherry pick…
    。即使两个repo的文件结构不匹配,Git也可以管理这一点(只要repoA中您要反向传输到repoB的提交在
    子文件夹b中是独立的,那么一切都应该正常)

可能子模块/子树是实现这一点的最佳方式,但只是提供一个(有些复杂的)替代方案:

  • 通过
    git filter branch--subdirectory filter
    (注意
    filter branch
    重写repo,因此您应该在repoA的单独副本上执行此操作)将repoA的子文件夹b提取到新的独立repoB中
  • 继续将回购协议作为主要回购协议
  • 通过git remote Add repoA…
  • repoA中偶尔的变化可以通过
    git-fetch-repoA直接提交给repoB;git cherry pick…
    。即使两个repo的文件结构不匹配,Git也可以管理这一点(只要repoA中您要反向传输到repoB的提交在
    子文件夹b中是独立的,那么一切都应该正常)

看看是否是您正在关注的。我正在使用
git subrepo
。备选方案是
git子树
git子模块
,但我的研究表明,
subrepo
在这一点上最容易使用。可能是@phd-nope的重复,我不想删除任何内容。我想复制一个子目录。如果答案在那里-特别是
git子树
-适用,您只需不删除原始目录。看看是否是您正在关注的。我正在使用
git subrepo
。备选方案是
git子树
git子模块
,但我的研究表明,
subrepo
在这一点上最容易使用。可能是@phd-nope的重复,我不想删除任何内容。我想复制一个子目录。如果答案在那里-特别是
git子树
-适用,您只需不删除原始目录即可。