问题描述
我有一个名为 main
的开发分支、一个名为 staging
的暂存分支和一个名为 production
的生产分支。我想将修补程序推送到生产分支。
首先,我从 main
创建了一个新分支:
git checkout main
git checkout -b hotfix
然后我将分支合并到main
:
git checkout main
git merge hotfix
然后将分支合并到 staging
以便首先部署到暂存环境并检查分支是否有效:
git checkout staging
git merge hotfix
现在我想将修补程序分支合并到 production
,但是合并会带来许多与修补程序无关的其他更改。这些其他更改尚未在 staging
环境中检查,因此我不想在 production
中使用它们。因此,我决定只将 cherry-pick
与修补程序相关的提交从 hotfix
分支转移到 production
。我在采摘樱桃的时候也有过一些冲突。
我想知道将来我在 main
和 staging
中精心挑选的代码区域是否会发生变化,它们会反映在 production
中吗?我担心git不会因为樱桃挑选和冲突而反映它们。
是否有更好的方法来处理 git 中的修补程序,以免发生上述问题?
解决方法
我不确定我是否正确理解您的问题,但关于这部分:
我想知道将来我在主要和暂存中挑选的代码区域是否会发生变化,它们会反映在生产中吗?我担心git不会因为樱桃挑选和冲突而反映它们。
当您挑选时,git“重放”提交引入的更改,并将这些更改应用到目标分支上,进行新的(和不同的)提交。此提交与您选择的提交没有链接,因此 Git 永远不会知道“另一边”发生的任何事情,无论是否解决冲突。