Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
Git,在两个分支上重命名时,未检测到重命名_Git_Rename - Fatal编程技术网

Git,在两个分支上重命名时,未检测到重命名

Git,在两个分支上重命名时,未检测到重命名,git,rename,Git,Rename,许多关于Git在内容更改后未检测到重命名的问题。 我有一个不同的问题: 在公共祖先上有文件f_rename.txt。 在一个分支(分支)上,我将(仅,而不是内容更改)重命名为f_rename_1.txt 在其他分支上,仅重命名为f_rename_2.txt 合并两个分支时,会出现冲突: 我无法理解这种行为,即使我假设Git没有检测到重命名操作,并且f_rename_1被假设为一个新文件,那么为什么它被标记为冲突呢?与什么冲突 查看阶段文件,很明显未修改的文件(相同的SHA1): 我本来希望像

许多关于Git在内容更改后未检测到重命名的问题。 我有一个不同的问题: 在公共祖先上有文件f_rename.txt。 在一个分支(分支)上,我将(仅,而不是内容更改)重命名为f_rename_1.txt 在其他分支上,仅重命名为f_rename_2.txt

合并两个分支时,会出现冲突:

我无法理解这种行为,即使我假设Git没有检测到重命名操作,并且f_rename_1被假设为一个新文件,那么为什么它被标记为冲突呢?与什么冲突

查看阶段文件,很明显未修改的文件(相同的SHA1):

我本来希望像中那样重命名/重命名

我不是在问如何解决冲突!,但是为什么Git会这样做呢。 我正在使用Git'2.13.3.windows.1'

谢谢
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状态
输出,因为有各种我称之为“高级别”的合并冲突,没有这些数据很难区分。(见附件)