情况是这样的。我有一个主人和一个分支,可以称之为“image2”
所以从最新的大师到目前为止,我分支并创建了image2。我继续研究image2分支......过了一会儿发现了一个巨大的bug,也影响了主人。
现在因为主版本是实时的,我需要在那里修复它。我结帐以掌握,修复其中一个文件中的错误(让我们称之为文件A),然后返回到image2继续处理该分支。事情是,现在修复仅适用于master,而不适用于image2。 问题是:将主修复程序应用于image2的正确方法是什么?因为合并会导致麻烦,我想,因为image2中的文件A的代码有很多新东西,但它也需要在master中应用的修复。
谢谢
答案 0 :(得分:1)
如果未将image2分支推送到远程存储库,则可以在新主服务器上重新绑定此分支。如果它已被推送到远程仓库,则需要将其与新主仓合并。
如果合并是一个很大的问题,那么你只能应用修复master分支中的bug的提交。为此,请使用“cherry-pick”命令。
在image2分支上运行git cherry-pick sha-value-of-the-commit
答案 1 :(得分:1)
您正在寻找名为Git Flow
的Git分支策略这定义了众多常见开发方案的策略,包括" hotfix"你在问题中描述的场景。
master
应始终包含在生产中正在运行的代码。所以你说你需要修复prod中的错误是正确的,你可以从master
创建一个修补程序分支。修复错误后,将修补程序分支部署为prod,然后合并到master
。
由于功能分支可能过时,因此需要刷新master
或develop
的功能分支。如果您希望将merge master
/ develop
添加到您的功能分支中,或者想要rebase master
之上的功能分支,则会优先考虑。我个人的偏好是rebase。
因为合并会导致麻烦
如果您指的是合并冲突,那么是的,当您有并行的开发跟踪(即hotfix
和feature
分支)时,很可能会发生合并冲突。这个想法是尽早解决合并冲突,所以他们不会堆积起来。如果您计划将功能分支转换为主分支,则最终需要解决冲突,但功能分支负责解决这些冲突并保持最新状态。
这里有很棒的gitflow分支图供参考。这应该有助于说明如何以及何时合并分支: