1

我有一个主站点,我已将其分成两个新站点。这些网站有 80% 相同,但也有一些差异。因此,在主站点上进行更改时,需要将某些提交发送到分支,而其他提交则不需要。

现在我正在通过使用cherry-pick更新我的叉子来处理这个问题。因此,当我在需要传播的主站点上进行更改时,我必须登录到两个分支并使用cherry-pick 单独更新它们。然而,这有点乏味,因为每次我推送更改时,我都需要立即登录到我的两个分支并更新,所以我不会忘记哪些提交需要被拉入,哪些提交不需要。

我的问题是:有没有办法标记需要在主存储库上传播的提交,以便在我的分叉中我可以说“仅合并标记的提交”而不是逐个挑选每个提交?

感谢您提供有关如何管理这些网站的任何提示。


更新——我太新了,无法回答我自己的问题,而且这个回复对于评论来说太长了——所以,我把它扔在这里:

啊……好吧,我想我明白了。这是我第一次涉足分叉,所以我想我可能会有点迷失在这些条款上。似乎分支和叉子有时可以互换。让我看看我是否正确理解了这个概念。

我有一个原始存储库,它是原始站点。当站点出现分歧时,我应该采取原始回购并分叉到“fork A”中。这给我留下了原始的回购,我现在称之为“上游”。所以,我有主“上游”,它被分叉到叉子 A 中。

所以,我继续在 fork A 中工作,并且我有一些我想拉回“上游”的提交。为了解决这些问题,我会使用“git checkout upstream/master”在上游结帐。然后我可以将共享提交挑选到该分支并推送它们。

现在,在 fork A 分离后的晚些时候,我还将 Fork B 从“上游”中分离出来。要更新 Fork B,我现在只需执行“git pull upstream/master”,对吗?

感谢您的帮助理解。我很喜欢 git 的强大功能,但它绝对会让你的大脑大吃一惊。:)

4

1 回答 1

0

是的,它被称为分支。在这种情况下,您需要第三个分叉。

如果您使 master 仅包含属于公共树的内容,并且每个分支都有自己的特殊部分,那么您只需将 master 更改合并到每个分叉的部分中。根据您的描述,听起来当前的 master 确实不“应得”该状态,并且应该与其他 master 一样,是完全共享的核心代码的一个分支。

要做到这一点,我建议找到你在哪里分叉了另外两个分支,然后从那里创建另一个。接下来,将您关心的更改从旧 master 分支拉入其中,然后将其声明为新 master 并将新更改合并到其中,或者您可以重新设置现有分支以删除樱桃选择,这样一个简单的合并将运作良好。

PS:如果您选择“干净”的变基路线,请先创建备份分支。

于 2013-12-18T17:38:17.670 回答