Git:将一系列本地提交合并到子树分支

Git:将一系列本地提交合并到子树分支,git,subtree,Git,Subtree,我对本地存储库中的上游项目做了一些更改。我最初将上游回购协议复制到我的本地项目中。现在我想获取一系列承诺,并将其应用于上游回购。我可以用补丁来实现这一点,但我想知道是否可以使用子树合并来实现这一点 因此,更具体地说: # project structure root projectB ... # history HEAD C B A 如果我将projectB的回购添加为远程,签出它的一个分支,如何将变更B和a合并到此分支中,在主回购中保留其他变更,最后将分支推回到projectB的远

我对本地存储库中的上游项目做了一些更改。我最初将上游回购协议复制到我的本地项目中。现在我想获取一系列承诺,并将其应用于上游回购。我可以用补丁来实现这一点,但我想知道是否可以使用子树合并来实现这一点

因此,更具体地说:

# project structure
root
  projectB
  ...

# history
HEAD
C
B
A
如果我将projectB的回购添加为远程,签出它的一个分支,如何将变更B和a合并到此分支中,在主回购中保留其他变更,最后将分支推回到projectB的远程


想法?

子树拆分应该做你想做的事情

git subtree split --prefix=projectB --rejoin --branch=project-B-split

将创建一个名为project-B-split的新分支,其中包含仅影响projectB内文件的提交。这应该有助于推动projectB的主版本-在一些适当的重定和(潜在的)正如Patrick在评论中所建议的那样,如果您没有一个干净的副本,则进行一些樱桃采摘。这取决于您最初是如何获得projectB来源的——具体来说,您是否将其历史记录纳入了回购协议中。

樱桃采摘最有可能是您正在寻找的+1我将在下一次参与该项目时对此进行检查。我会确认这是否是我想要的(听起来很有希望)