




















这是一个创建于 466 天前的主题,其中的信息可能已经有所发展或是发生改变。
基准分支是 master ,开发分支是 feature 。现在准备发布上线了,需要 feature 合入 master ,此时有冲突,我解决冲突有两种方式。
一是:直接把 master 合入 feature 解决冲突,再把 feature 合入 master ;
二是:先从 master 拉出分支 master_1 ,把 feature 合入 master_1 解决冲突,再把 master_1 合入 master ;
这 2 种有区别吗,LD 必须让第二种,不理解。
2 freemoon 2025 年 3 月 5 日2 是脱裤子放 p 。但是想来是你 leader 长期以来的习惯了,也不要去纠正他,没必要。 |
3 wu00 2025 年 3 月 5 日不理解 |
4 RightHand 2025 年 3 月 5 日 via Android随便,毕竟大部分人把 git 当大号 svn 用 |
5 Razio 2025 年 3 月 5 日正常不是要 rebase 到最新的 master 么。哪种都行,只要没合并出 bug 。 |
6 JYii 2025 年 3 月 5 日除非 master_1 是预生产、预发布,不然即便是回滚,分支线路都没看出什么优势来 |
7 liuguangxuan 2025 年 3 月 5 日从技术上来说,应该没什么区别。 |
8 inhzus 2025 年 3 月 5 日二是脱裤子放屁 +1 |
9 sagaxu 2025 年 3 月 5 日如果 feature 短期内被合入 master ,那我更习惯用 rebase ,并且把 feature 中间的 commit 都去掉,减少对 master 的扰乱 |
10 vcbal 2025 年 3 月 5 日风险控制吧,是多此一举,但就是为了降低风险,建议听领导的 |
11 zomco 2025 年 3 月 5 日rebase 吧 |
12 dxk611 2025 年 3 月 5 日 via iPhone迭代周期短,变更记录少,用 rebase ;否则,方式一。方式二脱裤子放屁 |
13 leonshaw 2025 年 3 月 5 日一 back merge 应该避免 |
14 nanrenlei 2025 年 3 月 5 日1 、估计你们用的 git 不规范造成的,一般 feature 合并到 master 为什么会冲突呢,有冲突的话在 feature 应该就解决了 |
15 Ayanokouji 2025 年 3 月 5 日如果只有一个 feature 分支,方式一,就行。如果多个 feature 分支,推荐方式二。 |
16 sfz97308 2025 年 3 月 5 日核心问题在,你的 feature 分支从主分支拉出来之后,就再也不同步主分支的变更了,导致 feature 分支与主分支越走越远。 |
17 jamel 2025 年 3 月 5 日说不理解的 都没开发过复杂的场景。比如: 另外一个 master 不一定是要上线的代码,可能是 上线前的准备回归封板代码,如果这个时候 feature/B 也合并到了 master 出现了严重 bug ,这个时候 feature/A 同步 master 的代码 就会被污染。 新开一个分支 用来同步 最新的稳定版本的代码 以及 处理冲突,feature/A 要同步 也是 同步 已经上线后的稳定版本代码,而不是 直接 同步 最新的 master 代码。 feature 是 基于 某个时间点的 功能开发版本,不一定非要跟 最新 master 保持同步,feature 的目的 是为了完成 当时那个时间点的需求,开发完成了,就新开一个分支 去合并到 master ,这也可以在 feature 上 继续开发,编码 跟 环境部署测试 是两回事。 如果有很多的冲突 不兼容的问题 是需要团队提前沟通的,不可能说 feature/A 在迭代功能,feature/B 在重构,你这合到 master 怎么玩,还怎么发布上线? |
18 Felldeadbird 2025 年 3 月 5 日用第二种是怕你把 master 搞乱,又不懂恢复,又或者为了省事,搞错不用回滚等操作。算是一种新手保护,或者团队有人搞乱过。 实际上第一种就最好了。可以的话,尽量 git rebase |
19 daimon1 2025 年 3 月 5 日第二个操作毫无意义啊,分出最新 master ,再合并回到最新 master ,和操作一 等价。 |
20 whoosy 2025 年 3 月 5 日@lasuar 第一种方式叫循环回合,可能会带来 merge base 爆炸的问题,小项目无所谓随便搞,像远古银行的项目因为不规范导致某些仓库的 merge base 多达上百个,merge 一个小的改动都非常耗时。这种仓库使用 gitlab 、gitee 线上合并是会拒绝的,github 没试过 |
21 h1298841903 2025 年 3 月 5 日我都是用方法一,我们公司合入代码出现冲突时,会有提示教程,用的就是方法 1 ; |
22 030 2025 年 3 月 5 日只要不是在 master 上操作就行,local branch 也算是 diff branch |
25 gesse 2025 年 3 月 5 日没有人说要用 squash merge 吗? |
26 JLNR 2025 年 3 月 5 日方法 1 和 2 是基本等价的,区别就是方法二多创建了一个无用分支 p.s. 比较看不惯不管有没有冲突先把 master 往 feature 分支一顿 merge ,再发 merge request 到 master 的,没冲突的话不应该直接发 mr 嘛?所以还是 merge 前先 rebase 比较好,分支看起来清晰干净 |
27 wwwz 2025 年 3 月 5 日有没有想过问 deepseek ,说的很清楚。 |
30 virusdefender 2025 年 3 月 5 日你直接 git rebase master 不就相当于没有冲突了么,那就没有这个问题了 |
31 kapaseker 2025 年 3 月 5 日走 Merge Request 的话,都是要先解决完冲突才能和入,在 Master 上拉不拉新分支不影响什么 |
33 xfmaa 2025 年 3 月 5 日你们 LD 的想法起点是让 master 一直保持正确可用的版本,git merge 后发现不对在 log 里就会发现错误。所以想先创建一个临时分支用于合并,合并确认无误后在 master 上保存版本。说白了他就是接受草稿本上犯错,卷子上一直整洁。你非要在 master 上搞个潜在的问题出来他不喜欢 |
34 sngxx 2025 年 3 月 5 日 |
35 xfmaa 2025 年 3 月 5 日@xfmaa 补充一下,你们 ld 肯定还要求你们确认无误 merge 之后把这个 master_1 分支删掉。这个其实无所谓,就是习惯问题,你的 ld 考虑的是所有人一起用的版本需要整洁,不想万一哪一个往上面抹了一坨然后说擦掉就没事。 |
37 SayHeya 2025 年 3 月 5 日实际用方法一 |
38 clovershell 2025 年 3 月 5 日两种合并方式的本质区别在于合并方向和对历史记录的影响,LD 要求使用第二种方式的核心原因在于保持 master 分支的稳定性。以下是具体分析: **1. 第一种方式( master→feature→master )的潜在问题:** **2. 第二种方式( feature→master_1→master )的优势:** **技术实现差异对比:** # 方式二 **企业级开发的最佳实践建议:** 这种方式既能保证主分支稳定性,又符合审计要求,是大型项目协同开发的常规做法。理解这个设计需要跳出个人开发视角,从团队协作和交付安全的角度思考分支策略的价值。 来自 Deepseek 回答 |
40 unco020511 2025 年 3 月 5 日你每次合并前 rebase 一下 master 就可以了 |
41 JohnSmith 2025 年 3 月 5 日 via Androidmerge queue 的需求啊 github 已经原生支持了 就是防止并行开发冲突的 |
42 ryougifujino 2025 年 3 月 5 日如果 feature 分支是和其他人共享的,就不要用 rebase ,用 merge |
44 galenjiang 2025 年 3 月 5 日唯一的区别是生成下个 commit 记录的 first parent commit 是 master 上的最后一个 commit 还是 feature 上的最后一个 commit.用了 fast forward merge 就是没有区别 |
45 nekochyan 2025 年 3 月 5 日我比较喜欢 feature 开发完成后,master rebase 到 feature ,然后 feature 再 merge 到 master ,冲突都在 feature 上解决了 |
47 guanzhangzhang 2025 年 3 月 5 日feature 上和别人不共用就 |
48 galenjiang 2025 年 3 月 5 日假如用了 gitlab 或者 GitHub 冲突了,会有提示,按照提示操作就是最佳的方案。 |
50 lc5900 2025 年 3 月 5 日我选择 rebase 过来再提交,自己的功能分支随便玩,master 上的代码也是稳定的,问题不大 |
52 jqtmviyu 2025 年 3 月 5 日插眼. 我一直都是用的方法 1. 等大佬们讲下有啥更好的方法. |
54 HB9527 2025 年 3 月 5 日建议换个 LD |
56 nicholasxuu 2025 年 3 月 5 日正常是第一种,第二种是多人多个更新,一起上公交车(中间 PR ),去坐火车(正式发布)的方式。 |
58 FringJX 2025 年 3 月 5 日还有个建议: 多关注提交通知,主分支有更新,就及时合并的你自己的分支,这样几乎遇不到冲突 |
59 gaeco 2025 年 3 月 5 日直接开发分支变🐔(基),然后合并到 master |
61 Reficul 2025 年 3 月 5 日方法 1 不讲究,但是比较简单,很多人都只会这样。 总结下,最好本地 rebase 之后 force push 到 feature 分支,然后直接合并到 master 。方法 2 可能可以得到一样的效果,算次优吧。 不讲究随便弄就来回 merge 好了,又不是不能用,反正代码不会丢。 |
62 Reficul 2025 年 3 月 5 日不对,讲错了,更正下:即使 ff 合并也 rebase 后合并不一样,冲突解决的部分是发生在 merge commit 里的。 |
63 aababc 2025 年 3 月 5 日我们是两个都用,当没有冲突的时候直接提 pr ,当有冲突的时候从 master 创建一个新的分支然后把 feature 合并到新分支之后 使用新的分支再提 pr |
65 ooops 2025 年 3 月 5 日都不用,用 rebase |
66 KingHL 2025 年 3 月 5 日二有个叫法叫做 release 分支,多分支合作开发的时候,通过 release 分支合并不同的 feature 分支代码发布,发布完成之后再合入 master 。 |
67 CoderChan 2025 年 3 月 5 日开发分支的 commit 比较少的情况下,可以使用 rebase (没把我别用),这样 git log 是一条直线美观。使用 merge 多了后 gitlog 看着比较乱 |
70 EMMMMMMMMM 2025 年 3 月 6 日 via Android一堆人说是一样的?? |
72 Maboroshii 2025 年 3 月 6 日回滚的话肯定用 tag 啊。第一种没什么问题,本地解决冲突再去 merge 到主 master ,不过有精力的话,rebase 肯定是最佳选择。 |
73 yuankui 2025 年 3 月 6 日github 的 squash 挺好用的。 将 main 合入 feaure 分支解决冲突不应该是常规操作了吗? |
74 jokechen 2025 年 3 月 6 日 via Android在我看来,这两种思路本质上是把 master 合并到 feature 还是把 feature 合并到 master 的问题。 |
76 zt5b79527 2025 年 3 月 6 日学一下 rebase 吧,这才是你问题的最正确解法 |
77 macha 2025 年 3 月 6 日我感觉我周围很多人都很依赖 git 的合并算法,其实冲突比较多的时候,最好是拉着同事一起合代码,这样最保险。 |
78 Lemonadeccc 2025 年 3 月 6 日我们小公司习惯用 rebase ,然后 merge 。一般自己的提交在提交前都 stash ,更最新之后 stash apply 解决自己的冲突然后 push ,再在主分支 merge 新的 feat |
79 myderr 2025 年 3 月 6 日哈哈,我们就是当 svn 用,直接 master 一把梭 |
80 Wh1t3zZ 2025 年 3 月 6 日我的习惯是将自己的 feature 分支频繁 rebase 到 master 分支,如果出现冲突,在自己的 feature 分支里该回滚就 reset ,该整理 commit 就 squash ,该强制推送就强推,保证合并回 master 分支时没有冲突,并且 git graph 是能清晰向前推进的。 |
81 hnliuzesen 2025 年 3 月 6 日感觉这两种都是在合入 master 时使用 rebase 的情况下有意义,可以保持 master 是一条线 |
82 GaGaGood 2025 年 3 月 6 日大厂方案: 总结: |
83 FrankAdler 2025 年 3 月 6 日 via Android方案 1 就可以了,除了人情世故,上面那些洋洋洒洒一大堆的以为自己很有经验的,求求你们试试 squash merge 吧,所有问题都解决了 |
84 Boben 2025 年 3 月 6 日方案 2 类似 gitflow 的模式吧,master_1 等同于 develop |
85 Laobai 2025 年 3 月 6 日你只需要嗯嗯嗯,好好好,然后自己用方法一就行了 |
86 HangoX 2025 年 3 月 6 日@RightHand 刚想说这个,就是当做 svn 用了 |
87 korvin 2025 年 3 月 6 日 |
88 mnhkahn 2025 年 3 月 6 日1 就行,diff 是关键 |
89 zbowen66 2025 年 3 月 6 日为什么不是 rebase ?为什么不是 squash merge ? |
90 demonzoo 2025 年 3 月 6 日rebase 吧?在你的 feature branch 基于 master branch 操作 rebase |
91 wangyzj 2025 年 3 月 6 日你的 dev 和 release 呢 |
92 OnePunchMan100 2025 年 3 月 6 日我们是会基于 master 分支 checkout 一个带发版日期的版本分支 A 出来, 然后把多个 feature 合并到分支 A ,解决冲突后,发版时再把分支 A 合并到 master 。类似于你说的方法 2 。 |
93 Nick66 2025 年 3 月 6 日直接在 master 解决 测试没问题再提交代码 |
94 rainbowhu 2025 年 3 月 6 日feature 与 master 有冲突,说明 feature 版本落后了,要同步下 master 最新代码。 另外还有 merge commit 方式,如果没有 mr 等复杂流程: 如果有 mr 流程(与 rebase 方式类似,只是会多 1 个 merge commit) 命令简单写的,不是很精简,理解意思即可 |
95 rainbowhu 2025 年 3 月 6 日当然还有一些简单的方式 |
96 sir283 2025 年 3 月 6 日 via Android直接 git push -f ,管它什么冲突,是 lead 叫我 push 的,我只管 push ,出了问题找 lead 。 |
98 zthxxx 2025 年 3 月 6 日 |
99 mark2025 2025 年 3 月 6 日尽量避免“直接把 master 合入 feature 解决冲突” |
100 seanzxx 2025 年 3 月 6 日在 feature 分支 rebase 呀,然后再 merge 到 master |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。