【发布时间】:2018-12-18 07:49:37
【问题描述】:
对于我们的一个项目,我们必须使用外部公司的代码库。他们偶尔会更新他们的 master,然后我们必须将其集成到我们的 repo 中。然而,因为他们做了一些奇怪/不必要的事情,我们有几个提交,我们需要在每次他们更新他们的主人时应用,然后我们将它合并到我们的。这些提交是发布分支的一部分(我们称之为release/old。要获取最新的更改并应用这些提交,我要做的是从它们的主分支(例如release/new)创建一个新分支,然后重新设置从 release/old 提交到 release/new。
我首先从新分支尝试了git rebase release/old,但这显然不起作用,因为它将来自release/new 的提交应用到release/old。当我从 release/old branch 尝试 git rebase -i release/new 时(所以从旧的提交并将它们应用到新的)它经历了所有的提交,但是当我回到新的分支并尝试推送它时,它什么也没说可以推送,在git log 中只显示来自 master 的提交。
我只知道之前使用git rebase 完成了它,但我不知道正确的命令是什么。
【问题讨论】:
-
使用
git rebase --onto;见this docs entry。 -
所以
their master+couple of commits applied from your side=release/old?和“来自他们的主人的新分支(例如发布/新)”意味着their master与release new相同? -
正确,目前
release/new与他们的主人相同,必须发生的是来自release/old的提交将应用于release/new(显然只有我们的,大约有8个提交总共)。有时间我会试试git rebase --onto,谢谢你的建议。 -
如果
release/new与their master相同(即没有添加您这边的额外提交)并且release/old是基于他们的their master+a couple of commits applied from your side那么你不需要rebase一点也不。您可以创建release/old的副本并将其命名为release/new。 -
应该澄清一下,主控
release/new所基于的比release/old所基于的要新,所以release/new有变化release/old没有。我认为仅仅复制release/old是不够的。