Git,在两个分支上重命名时,未检测到重命名
许多关于Git在内容更改后未检测到重命名的问题。 我有一个不同的问题: 在公共祖先上有文件f_rename.txt。 在一个分支(分支)上,我将(仅,而不是内容更改)重命名为f_rename_1.txt 在其他分支上,仅重命名为f_rename_2.txt 合并两个分支时,会出现冲突: 我无法理解这种行为,即使我假设Git没有检测到重命名操作,并且f_rename_1被假设为一个新文件,那么为什么它被标记为冲突呢?与什么冲突 查看阶段文件,很明显未修改的文件(相同的SHA1): 我本来希望像中那样重命名/重命名 我不是在问如何解决冲突!,但是为什么Git会这样做呢。 我正在使用Git'2.13.3.windows.1' 谢谢Git,在两个分支上重命名时,未检测到重命名,git,rename,Git,Rename,许多关于Git在内容更改后未检测到重命名的问题。 我有一个不同的问题: 在公共祖先上有文件f_rename.txt。 在一个分支(分支)上,我将(仅,而不是内容更改)重命名为f_rename_1.txt 在其他分支上,仅重命名为f_rename_2.txt 合并两个分支时,会出现冲突: 我无法理解这种行为,即使我假设Git没有检测到重命名操作,并且f_rename_1被假设为一个新文件,那么为什么它被标记为冲突呢?与什么冲突 查看阶段文件,很明显未修改的文件(相同的SHA1): 我本来希望像
Boaz您在问题中包含的图像具有
git状态
输出
所需的冲突(重命名/重命名):
由git merge
命令打印
您现在看到的索引中留下的痕迹是,索引有一个stage-1条目用于原始名称(没有stage-2或stage-3条目),一个stage-2条目用于一个新名称(没有stage-1或stage-3条目),一个stage-3条目用于另一个新名称(没有stage-1或stage-2条目)。git status
命令打印该跟踪的输出
查看您的答案,它显示相同的
git状态
输出。tware deleted
行只会在后面出现,因为输出是按文件名排序的,将被删除
从后面出现的w
开始。如果它没有检测到重命名,就不会触发冲突。但由于git知道发生了两个重命名,这两个重命名显然相互冲突,所以它产生了冲突。为什么你认为这两个更名没有冲突?他们以两种不可能结合的方式处理同一个文件。这是一个冲突。@Nils\M我理解我的错误,多亏了torek的回答,我仍然无法理解在大量冲突的情况下,如何分析和理解这是rename/renameSo@torek,如果冲突不多,开发人员应该分析和检测这些三重冲突,并理解这是重命名/重命名?有没有办法简化此分析?如果保存从git merge
命令输出的CONFLICT…
错误消息,您将获得必要的信息。在我看来,Git真的应该将其写入索引,使其能够自动检索并获得更好的Git状态
输出,因为有各种我称之为“高级别”的合并冲突,没有这些数据很难区分。(见附件)