2014-11-14 104 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合併。

相關問題