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

时间:2012-10-14 23:41:22

标签: git subtree

我对本地存储库中的上游项目进行了一些更改。我原本简单地将上游回购复制到我的本地项目中。现在我想获取一系列提交并将其应用于上游仓库。我可以使用补丁来做到这一点,但我想知道是否可以使用子树合并来执行此操作。

所以,更具体地说:

# project structure
root
  projectB
  ...

# history
HEAD
C
B
A

如果我将projectB的repo添加为远程,检查其中一个分支,如何将更改B和A合并到此分支中,在我的主仓库中留下其他更改,最后将分支推回到projectB的远程?

思想?

1 个答案:

答案 0 :(得分:1)

子树分割应该做你想要的。

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

将创建一个名为project-B-split的新分支,其中包含仅影响projectB内文件的提交。这应该有利于推动projectB的主人 - 经过一些合适的变基和(可能),如帕特里克在评论中建议的那样,如果你没有干净的副本,可以选择樱桃。这取决于您最初获取projectB源的方式 - 特别是您将其历史记录添加到您的仓库中。