Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果我使用cherry picks或手动编辑文件,git中的历史是否会发生分歧?_Git_Merge Conflict Resolution_Cherry Pick - Fatal编程技术网

如果我使用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会根据一些现有提交进行新的提交。差不多就是这样。一段新的历史是否有分歧?这取决于你如何定义“发散”。历史是永恒的;这就是历史;但“发散”是在旁观者的眼中。