git 中如何将子分支的多个提交作为一个提交合并到主分支?

33 天前
 tiRolin

我们组长说从子分支到主分支一定要用变基保持 dev 的提交记录的干净,我在子分支里又喜欢写一段代码只要完成一小部分的功能就立刻提交,这样方便恢复,但是最后等变基然后合并到主分支的时候,我那一大堆提交记录也跟着带过来了,就让 dev 变得很难看,大概是这样

我后面学着用这个压缩提交,可以将多个提交记录压缩成一个然后再合并到主分支上,但是用完之后提交记录变得更加诡异了,甚至会变成两个我有两个完全一样的提交记录,给我都整不会了,合并的时候也特别麻烦,审阅了很多东西,最后还让组长帮忙看看最终的内容有没有预期之外的修改才敢合并的,出了这事之后我就不敢再用压缩提交了

下面是提交记录,之所以有两个一样的提交就是因为当时用了压缩提交

后面我又跟组长学修正提交,可以修正前一个提交来解决问题,但是我用修正提交的时候有时候不知道为什么还是会触发自动合并和更新,最后虽然说可以效果没变化,但是提交记录还是变得很难看,具体来说如下图所示

到这里为止我是真没办法,不知道该怎么解决这个问题,有没有懂得大佬来说一下,虽然说这个问题也不影响开发,但是这么乱的记录我看着心里挺膈应就是

3581 次点击
所在节点    git
35 条回复
clue
33 天前
你们组长也奇怪,都要求用变基 (rebase) 了,结果 mr 最后又走的 merge commit 而不是 fast-forward ,搞了半天结果最后一步又放弃了 rebase 的最大优势
chen1314
33 天前
Squash merge
Donne
33 天前
@lenglengyuchen 不合并的话根本没法看,大部分开发的时候都是频繁提交,commit 的信息也不会写的很仔细,每次看 commit ,完全找不到重点
junbaor
33 天前
永远有人争论 rebase merge ,个人更建议多人协作时用 merge, 会保留最真实的历史记录,rebase 的优点是让 history 好看,但出问题的风险更大。
qq362220083
33 天前
我用小乌龟,先变基,把多个提交合并成一个提交,最后再推送。中间有冲突就解决冲突。
Phariel
33 天前
用 Squash merge
Rebase 我用了十几年 Git 一直敬而远之 总觉得危险
cinlen
33 天前
每次提交采用 git commit amend 不断向上一个 commit 合并,或是 git rebase -i 然后选择要合并的多个 commit.

采用 rebase + squash 可以得到干净的提交历史, 只是你要有能力 hold 得住这套机制。
lianhuayu420
33 天前
squash and merge
jqtmviyu
32 天前
方法 1: 用 git rebase 修改自己的本地分支, 同一个功能的 fixup

方法 2: 新建一个功能分支, 开发完 cherry-pick 到功能子分支, 子分支再合到主分支
lenglengyuchen
32 天前
@Donne 开发时是会提交很多次 commit ,但每次肯定不是随便提,说实话我没遇到过太多要查 commit 的场景,可能查问题时要找 commit 的人,与合并提交的 commit 没啥差别
kongkongkong101
32 天前
patch squash 二选一
cymok
31 天前
1. git rebase -i + squash
2. 先在当前 commit 节点创建 branch 或 tag 作备份,git reset --mixed 重新按自己想要的样子一个个 add + commit ,再 rebase 过去
harlen
31 天前
以前都用 rebase -i 后面, 然后 开源节流的时候,就说你提交记录只有那一点点,无法证明你的工作量,
现在都直接用 merge --squash
guanzhangzhang
30 天前
自己分支上
定期 git pull --rebase origin 主干分支名字
提交之前 git rebase HEAD~数字 合并
flashBee233
30 天前
新创建一个本地分支
再进行提交合并的操作
最后合并到主分支

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1152591

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX