Problem/Confusion 关于合并分支和 "modify/delete" 冲突
Problem/Confusion about merging branches and "modify/delete" Conflicts
这是这个故事中 3 个分支的层次结构:
"master" branch
|
JohnReedAvery
|
Birdy
今天早些时候,我完成了“Birdy”分支中的几个脚本,我想将“Birdy”(那两个脚本)合并到“JohnReedAvery”中,最终目的是合并“JohnReedAvery”(那些2个脚本)变成“大师”。但是我还没有将“JohnReedAvery”合并到“master”中。相反,我想测试“git rm”功能,以便从分支的整个 {whatever word I should use here} 中完全删除一个或多个文件(提交)——意思是:从本地工作目录和(实际上)来自暂存和本地回购(提交)以及来自远程回购(GitLab / origin)。我似乎完全成功地从“JohnReedAvery”分支中完全删除了 2 个先前合并的提交(那 2 个脚本)。但是然后我想再次将 Birdy 合并回“JohnReedAvery”,这样我就可以继续进行测试合并请求,将“JohnReedAvery”合并到“master.
问题来了:
当我尝试再次将“Birdy”合并到“JohnReedAvery”时,我收到以下类型的错误消息:
CONFLICT (modify/delete): JohnReedAvery/Birdy/File01 deleted in HEAD and modified in Birdy.
Version Birdy of JohnReedAvery/Birdy/File01 left in tree.
我尝试(再次)合并到“JohnReedAvery”中的 Birdy 中的 2 个脚本中的每一个都得到了这个。当我第一次看到这个错误时,它只针对两个文件中的一个,并且是“JohnReedAvery”(分支)能够在“Birdy”子目录中看到的唯一一个。 (在我完成所有“git rm”和“提交”和“推送”步骤以删除所有这些东西之后,它无法看到它。这个只有在这个部分失败的尝试之后才出现第二次合并。)所以,我猜想它想让我在同一个文件上做 another "git rm"(我在几分钟前成功完成了) ,这似乎有效:该文件的“JohnReedAvery”(分支)视图消失了。
但是现在当我再次尝试从“Birdy”合并到“JohnReedAvery”时,我在 2 个脚本中的每一个上都遇到了上述错误,我不知道它的想法错了。
你们能告诉我这里出了什么问题以及我如何解决它吗?
谢谢!
存在冲突是因为文件 File01 在分支 JohnReedAvery 上被标记为 deleted
,但您想将 modified
File01 从 Birdy 合并到分支 JohnReedAvery。
我建议备份(将其复制到单独的文件夹,不受版本控制)您的 File01 和 birdy 分支中其他更改的文件,将 JohnReedAvery 合并到 Birdy 中(以便 birdy 知道这些文件已被删除),然后复制你的文件,然后合并应该没有冲突。
一般来说,在合并 JohnReedAvery 之前,您还应该能够在 birdy 分支中使用 git stash
来保存您的更改,但备份不会有什么坏处。
git pull
git stash
git merge JohnReedAvery
git stash pop
这是这个故事中 3 个分支的层次结构:
"master" branch
|
JohnReedAvery
|
Birdy
今天早些时候,我完成了“Birdy”分支中的几个脚本,我想将“Birdy”(那两个脚本)合并到“JohnReedAvery”中,最终目的是合并“JohnReedAvery”(那些2个脚本)变成“大师”。但是我还没有将“JohnReedAvery”合并到“master”中。相反,我想测试“git rm”功能,以便从分支的整个 {whatever word I should use here} 中完全删除一个或多个文件(提交)——意思是:从本地工作目录和(实际上)来自暂存和本地回购(提交)以及来自远程回购(GitLab / origin)。我似乎完全成功地从“JohnReedAvery”分支中完全删除了 2 个先前合并的提交(那 2 个脚本)。但是然后我想再次将 Birdy 合并回“JohnReedAvery”,这样我就可以继续进行测试合并请求,将“JohnReedAvery”合并到“master.
问题来了:
当我尝试再次将“Birdy”合并到“JohnReedAvery”时,我收到以下类型的错误消息:
CONFLICT (modify/delete): JohnReedAvery/Birdy/File01 deleted in HEAD and modified in Birdy.
Version Birdy of JohnReedAvery/Birdy/File01 left in tree.
我尝试(再次)合并到“JohnReedAvery”中的 Birdy 中的 2 个脚本中的每一个都得到了这个。当我第一次看到这个错误时,它只针对两个文件中的一个,并且是“JohnReedAvery”(分支)能够在“Birdy”子目录中看到的唯一一个。 (在我完成所有“git rm”和“提交”和“推送”步骤以删除所有这些东西之后,它无法看到它。这个只有在这个部分失败的尝试之后才出现第二次合并。)所以,我猜想它想让我在同一个文件上做 another "git rm"(我在几分钟前成功完成了) ,这似乎有效:该文件的“JohnReedAvery”(分支)视图消失了。
但是现在当我再次尝试从“Birdy”合并到“JohnReedAvery”时,我在 2 个脚本中的每一个上都遇到了上述错误,我不知道它的想法错了。
你们能告诉我这里出了什么问题以及我如何解决它吗?
谢谢!
存在冲突是因为文件 File01 在分支 JohnReedAvery 上被标记为 deleted
,但您想将 modified
File01 从 Birdy 合并到分支 JohnReedAvery。
我建议备份(将其复制到单独的文件夹,不受版本控制)您的 File01 和 birdy 分支中其他更改的文件,将 JohnReedAvery 合并到 Birdy 中(以便 birdy 知道这些文件已被删除),然后复制你的文件,然后合并应该没有冲突。
一般来说,在合并 JohnReedAvery 之前,您还应该能够在 birdy 分支中使用 git stash
来保存您的更改,但备份不会有什么坏处。
git pull
git stash
git merge JohnReedAvery
git stash pop