如果我使用cherry picks或手动编辑文件,git中的历史是否会发生分歧?
我有一个名为如果我使用cherry picks或手动编辑文件,git中的历史是否会发生分歧?,git,merge-conflict-resolution,cherry-pick,Git,Merge Conflict Resolution,Cherry Pick,我有一个名为main的开发分支,一个名为staging的暂存分支和名为production的生产分支。我想把热修复程序推到生产部门 首先,我在main上创建了一个新分支: git checkout main git checkout -b hotfix git checkout main git merge hotfix 然后我将分支合并到main: git checkout main git checkout -b hotfix git checkout main git merge h
main
的开发分支,一个名为staging
的暂存分支和名为production
的生产分支。我想把热修复程序推到生产部门
首先,我在main
上创建了一个新分支:
git checkout main
git checkout -b hotfix
git checkout main
git merge hotfix
然后我将分支合并到main
:
git checkout main
git checkout -b hotfix
git checkout main
git merge hotfix
然后将分支合并到staging
,以便首先部署到staging环境并检查分支是否工作:
git checkout staging
git merge hotfix
现在我想将热修复程序分支合并到生产
,但是合并带来了许多与热修复程序无关的其他更改。这些其他更改尚未在staging
环境中签入,因此我不想在生产中签入它们。因此,我决定从hotfix
分支到production
中挑选与hotfix相关的提交。我采摘樱桃时也有一些冲突
我想知道我在main
和staging
中选择的代码区域将来是否会有变化,它们会反映在生产中吗?我担心git将不会反映它们,因为樱桃选择和冲突
有没有更好的方法来处理git中的修补程序,以避免出现上述问题?我不确定我是否正确理解了您的问题,但关于这一部分:
我想知道我在main和staging中选择的代码区域将来是否会有变化,它们会反映在生产中吗?我担心git将不会反映它们,因为樱桃选择和冲突
当您仔细挑选时,git会“重放”提交引入的更改,并将这些更改应用到目标分支上,进行新的(和不同的)提交。此提交与您cherry选择的提交没有链接,因此Git永远不会知道“另一端”发生的任何事情,无论冲突是否得到解决。显示图形的图表。cherry-pick会根据一些现有提交进行新的提交。差不多就是这样。一段新的历史是否有分歧?这取决于你如何定义“发散”。历史是永恒的;这就是历史;但“发散”是在旁观者的眼中。