2014-11-14 58 views
1

我们有两个分支,master(stable/live)和stage(测试)。部署时,stage合并为mastermaster将部署。如何强制合并到另一个git分支?

回到时间某人(并且这肯定不是我自己的同义词)只在master上做了几次提交(修补程序)。

现在,当合并stagemaster时,受影响的文件将不会再合并,它们将忽略stage分支中的更改。

这似乎是git的工作方式 - 这btw疏远我。我认为cherrypick是主提交或rebase ing,但由于缺乏知识,不知道是否会有任何成功 - 或者如何正确执行。

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

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

+0

我看不出如何在主服务器上创建这些修补程序可能是一个问题。在下一个版本中将'stage'合并到'master'应该可以正常工作 - 修复程序将保留,并且新提交将应用于它们之上。 – dcastro

+1

然而,你应该*做的是将'master'合并到'stage',以使这些修补程序返回到测试域。 – dcastro

+0

也会这么想,但是新的提交并不适用于合并这些文件......将'master'合并回'stage'似乎是一个明显而好的建议,我会试试看! – pong

回答

2

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

应该做什么,但是,合并masterstage将这些修补程序带回到测试域。 你的两个分支将同步,一切都应该再次确定。

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合并。

相关问题