如何将git分支强制合并到另一个?

时间:2014-11-14 11:44:55

标签: git

我们有两个分支,master(稳定/实时)和stage(测试)。部署时,stage合并到mastermaster将被部署。

回到某个人(这当然不是我自己的同义词)只在master上做了几次提交(修补程序)。

现在,当stage合并到master时,受这些修补程序影响的文件将不再合并,它们将忽略stage分支中的更改。

这似乎是git的工作方式 - 这让我疏远了。我考虑过cherrypick主要提交或rebase但是,由于缺乏知识,不知道这些是否会成功 - 或者如何正确地做到这一点。

合并这些不同步文件的最佳方法是什么,以便来自两个分支的更改都能存活?

更新
合并确实按预期发生;我对最终的差异感到困惑,直到我最终意识到它只是单向融合。

2 个答案:

答案 0 :(得分:2)

我不知道如何在master上创建这些修补程序是一个问题。在下一个版本中将stage合并到master应该可以正常工作 - 保留修补程序,并在其上应用新的提交。

要做的是将master合并到stage以将这些修补程序带回test-land。 你的两个分支将同步,一切都应该没问题。

答案 1 :(得分:0)

我建议改变:

git rebase --onto master <hash of the commit before making changes on stage> stage

您可以使用git log获取哈希值。在开始进行更改之前,您需要在stage分支上进行最后一次提交。

如果您在两个分支上修改了相同的文件,git会要求您解决冲突。您可以使用git mergetool或手动执行此操作,然后继续git rebase --continue

这会将修补程序添加到stage分支,然后您就可以将其与master合并。