git:在合并回一个cherry-picked提交时发生冲突

git:在合并回一个cherry-picked提交时发生冲突,git,Git,我对一个分支错误修复做了一个承诺,cherry选择了这个承诺 发展成为分支机构。然后我对bug修复分支做了一个更改 触摸commit A中创建的代码周围的代码区域。 现在,当我将origin/development合并回分支错误修复程序时 git指出了围绕这些界线的冲突。 这是git中的错误还是故意的? 我的意思是:引起人造冲突的变化起源于 在bugfix分支上,该分支已经有了提交。与合并时不同,cherry picked提交不再是相同的提交,而是包含相同更改的新提交查看cherry picke

我对一个分支错误修复做了一个承诺,cherry选择了这个承诺 发展成为分支机构。然后我对bug修复分支做了一个更改 触摸commit A中创建的代码周围的代码区域。 现在,当我将origin/development合并回分支错误修复程序时 git指出了围绕这些界线的冲突。 这是git中的错误还是故意的? 我的意思是:引起人造冲突的变化起源于 在bugfix分支上,该分支已经有了提交。与合并时不同,cherry picked提交不再是相同的提交,而是包含相同更改的新提交查看cherry picked提交的哈希,并将其与原始提交进行比较。因此,当您最终将两个分支合并在一起时,在任何一个分支中对受提交影响的代码所做的更改都将导致合并冲突。事实上,对于Git来说,就好像您已经在两个分支上以独立的方式进行了更改,并且在之后更改了提交的代码之后以不同的方式进行了更改

如果在最后合并两个分支之前,没有在其中任何一个分支中更改受cherry pick影响的代码,git将看到两个不同的提交,但更改完全相同。在这种情况下,不会显示合并冲突

请注意,提交不仅仅是它包含的更改。它也是您完成更改的日期、提交消息、父提交等。这是创建新提交的方式

这就是为什么你应该避免使用樱桃采摘,如果有其他方法实现你的需要

与合并时不同,樱桃挑选的提交不再是相同的提交,而是包含相同更改的新提交查看樱桃挑选的提交的哈希,并将其与原始提交进行比较。因此,当您最终将两个分支合并在一起时,在任何一个分支中对受提交影响的代码所做的更改都将导致合并冲突。事实上,对于Git来说,就好像您已经在两个分支上以独立的方式进行了更改,并且在之后更改了提交的代码之后以不同的方式进行了更改

如果在最后合并两个分支之前,没有在其中任何一个分支中更改受cherry pick影响的代码,git将看到两个不同的提交,但更改完全相同。在这种情况下,不会显示合并冲突

请注意,提交不仅仅是它包含的更改。它也是您完成更改的日期、提交消息、父提交等。这是创建新提交的方式


这就是为什么你应该避免使用樱桃采摘,如果有其他方法实现你的需要

冲突仅表示分支A顶端的代码与分支B顶端的代码冲突。如果您在bugfix分支中所做的更改与最初在提交中所做的更改冲突,则您必须解决这些更改

我的意思是:引起人造冲突的变化起源于 bugfix分支和该分支已经提交了一个


但是你也说你在bug修复分支中做了更多的更改?该代码不在开发中,因此冲突…

冲突只是表示分支A顶端的代码与分支B顶端的代码冲突。如果您在bugfix分支中所做的更改与最初在提交中所做的更改冲突,则您必须解决这些更改

我的意思是:引起人造冲突的变化起源于 bugfix分支和该分支已经提交了一个


但是你也说你在bug修复分支中做了更多的更改?该代码未在开发中,因此冲突…

不,有问题。考虑到您在提交A之前就从develop创建了bugfix分支,并且除了A和B之外没有进行任何提交,这应该完全适用。我假设这些文件在提交之前已经不同了,或者在合并之前从远程拉取之后已经更改了。是的,几天前我已经从develop分支出来,从那以后它们一直在分化。但是,commit A to Development的关键选择使这两个文件完全相同。因此,您回答了自己的问题。用这个来看看为什么会发生这种情况:git diff bug fix_B_SHA develope_A_SHA-file.c.所以merge并不真正关心一个分支是否已经有一个commit从另一个分支返回作为一个cherry pick?Manuel Schmidt声称,与合并时不同,一个樱桃挑选的提交不再是同一个提交,那么git尝试再次合并分支已经拥有的提交是有意义的。你是对的@Anton,git尝试合并樱桃挑选的提交,因为它是一个新的提交,尚未包含在分支中。No,出了问题。考虑到您是从开发权限b创建了错误修复分支
在提交A之前,除了A和B之外没有进行任何提交,这应该完全适用。我假设这些文件在提交之前已经不同了,或者在合并之前从远程拉取之后已经更改了。是的,几天前我已经从develop分支出来,从那以后它们一直在分化。但是,commit A to Development的关键选择使这两个文件完全相同。因此,您回答了自己的问题。用这个来看看为什么会发生这种情况:git diff bug fix_B_SHA develope_A_SHA-file.c.所以merge并不真正关心一个分支是否已经有一个commit从另一个分支返回作为一个cherry pick?Manuel Schmidt声称,与合并时不同的是,cherry picked提交不再是相同的提交,那么git尝试再次合并分支已经拥有的提交是有意义的。你说得对@Anton,git尝试合并cherry picked提交,因为它是分支中尚未包含的新提交