我们有两个分支,master
(稳定/实时)和stage
(测试)。部署时,stage
合并到master
,master
将被部署。
回到某个人(这当然不是我自己的同义词)只在master
上做了几次提交(修补程序)。
现在,当stage
合并到master
时,受这些修补程序影响的文件将不再合并,它们将忽略stage
分支中的更改。
这似乎是git的工作方式 - 这让我疏远了。我考虑过cherrypick
主要提交或rebase
但是,由于缺乏知识,不知道这些是否会成功 - 或者如何正确地做到这一点。
合并这些不同步文件的最佳方法是什么,以便来自两个分支的更改都能存活?
更新
合并确实按预期发生;我对最终的差异感到困惑,直到我最终意识到它只是单向融合。
答案 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
合并。