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