• Git 自动 merge 丢代码了,咋整?
  • 发布于 1周前
  • 45 热度
    5 评论
今天遇到个 git 合并丢代码的场景。 featB->featA->master featA 基于 master 开发,featB 基于 featA 开发。featA 合入 master 后,我直接在 featB 分支上 git merge master ,出了问题。 具体如下 featA 对于 file1 加了 line70 ,featB 对 file1 删了 line70 ,在 featB 上 merge master 后,git 自动 merge 的结果是 line70 依然还在。
用户评论
  • 怅忘归
  • base 没有 line70 ,那严格来说 B 并没有基于 A 开发,B merge master 没有问题,但是不能 merge 没有进 master 的 A
  • 2024/12/31 9:16:00 [ 0 ] [ 0 ] 回复
  • 怪咖豆
  • git merge 除非是 fast forward ,在处理多个分支修改同一文件时,不一定符合你的预期。所以这种情况用 rebase 甚至是 reset --soft ,然后手动处理变更会更好。
  • 2024/12/31 9:13:00 [ 0 ] [ 0 ] 回复
  • 离人愁
  • 为什么要在 featB 上面执行 featB 分支上 git merge master ? 这就是混乱的根源
    1. 要么是在 featB 分支上 `git merge featA`
    2. 要么是在 featB 分支上 `git rebase master`
  • 2024/12/31 9:08:00 [ 0 ] [ 0 ] 回复
  • 绝非偶然
  • featA 添加了 line70 ,并合并进了 master ,你在 featA 上 fork 出 featB ,featB 上删除了 line70 后,又把 master 合并进 featB ,这不就是在 featB 上添加了 line70 吗? 一点毛病没有。
  • 2024/12/31 9:05:00 [ 0 ] [ 0 ] 回复