我对本地存储库中的上游项目进行了一些更改。我原本简单地将上游回购复制到我的本地项目中。现在我想获取一系列提交并将其应用于上游仓库。我可以使用补丁来做到这一点,但我想知道是否可以使用子树合并来执行此操作。
所以,更具体地说:
# project structure
root
projectB
...
# history
HEAD
C
B
A
如果我将projectB的repo添加为远程,检查其中一个分支,如何将更改B和A合并到此分支中,在我的主仓库中留下其他更改,最后将分支推回到projectB的远程?
思想?
答案 0 :(得分:1)
子树分割应该做你想要的。
git subtree split --prefix=projectB --rejoin --branch=project-B-split
将创建一个名为project-B-split的新分支,其中包含仅影响projectB内文件的提交。这应该有利于推动projectB的主人 - 经过一些合适的变基和(可能),如帕特里克在评论中建议的那样,如果你没有干净的副本,可以选择樱桃。这取决于您最初获取projectB源的方式 - 特别是您将其历史记录添加到您的仓库中。