Pull request 合并请求存在冲突,无法进行自动合并操作。很迷

请先搜索确保没有重复发帖。

Gogs 版本:0.11.53.0603
系统类型及版本:macOS 10.15.6
问题描述:
step1: devmaster同步,都有 a 文件

step2: 从 master分支 checkout 出 f1f2f3

step3: f1增加 b 文件,推送到远程,pull request 到 dev,然后再把 f1 pull request 到 master

step4: f2增加 c 文件,推送到远程,pull request 到 dev,然后再把f2 pull request 到master

step5: f3 拉取远程master最新代码,然后偶增加 e 文件,推送到远程

step6: 想把 f3合并到 dev去,但是 pull request 报冲突。

我已经在 Gogs 的仓库复现了这个问题:https://try.gogs.io/shi/git-test

同样的问题,我在 github 上使用 pull request 就没问题,可以合并成功。请问是什么原因呢?

本地拉取的时候发现又没冲突,是可以 正常merge的。

嗯。。我通过 try.gogs.io 查到的后台错误是:

error: b: already exists in working directory

:joy_cat:,这个已存在是指什么已存在啊… 我现在解决这个冲突的办法(假设不能直接操作 dev):

  1. dev切出 resolve分支
  2. resolve分支merge分支f3
  3. resolve分支上随便修改一点,比如加一行空行,反正就是要commit一次推进一次节点
  4. push远程通过 pr 到 dev

但我就是觉得那次commit有点多余,就不知道它的具体意义在哪…

我的理解是你的新分支创建了一个b,旧分支也进行的同样的创建b的操作,两个创建是冲突的

的确,在f3分支 pr 到dev的代码提交变动中有一个add b的记录,有点怪异。

但我按照我上面描述的过程来创建内容,如果f2在 pr dev之前,先pull一下master,这个问题好像就没有,只要做类似我描述中f1f2的操作2次及以上,那么后面拉了master的人就会有这个问题。

找不到一个说服自己如何会出现这个情况的原因😂。

gitee 还没尝试,但 github 尝试发现它能合并,就越找不到原因了…

暂时我也只能建议团队里的人每次 pr 的时候都 pull 一下,如果不小心忘记了我就只能按照前面说的方法解决冲突了~😂

想请问一下大佬,我上面所述的这个现象是会在后续的版本中当成 bug 来处理,还是定性为用户操作不规范不予以额外处理呀? :grin:

github的背后的逻辑有点厉害。。目前gogs主要也是依赖git本身的一些操作。。