git rebase 那么重要么???

2024-12-07 17:46:09 +08:00
 hanxu317138

用了二周开发了一个需求, 提交了 200 多个 commit, 到主分支的时候. 被告知太不专业了. 为什么不 rebase 一下再上传.

我试着 Rebase 了一下 master, 各种冲突解决的要命, 所以问问大家. 你们合代码看重 rebase 么?

11127 次点击
所在节点    git
88 条回复
povsister
2024-12-07 18:34:57 +08:00
@dcsuibian
事实上是
no one gives a shit about what you have done in your place
otakustay
2024-12-07 19:18:15 +08:00
如果你 200 多个 commit 做的是一个事,本地先 squash 以后,再 rebase 一次,再 push 就好了啊
xe2vherd
2024-12-07 19:44:16 +08:00
确实不专业
jqtmviyu
2024-12-07 19:51:57 +08:00
我喜欢 rebase, 有时间上的线性.
unco020511
2024-12-07 20:42:26 +08:00
我觉得你这个场景的分歧是「 feaure 」分支往 dev 合并时,是否需要 squash 。并不是 MR 之前功能分支要不要 rebase 主干,有啥区别?如果主干和你有冲突,那你的 MR 本来就合并不了,你的 MR 能合并,就说明不存在冲突,那么你在提 mr 之前 rebase 了主干,对于主干来说,没有任何区别呀
11232as
2024-12-07 20:50:27 +08:00
rebase 相当于将你的代码从原来老版本的主干迁移到最新的主干,解决代码冲突的同时,也能发现和解决在你开发的这两周里与已提交到主干的代码的业务冲突。
我们这边的流程是从当前生产 master 建需求分支开发需求,完成后提到测试分支上,如果是跨版本级别的需求,要求每个新版本都进行 rebase 后再测试与合并。
bingoso
2024-12-07 20:58:30 +08:00
我用 git 管理笔记,两周都做不到 200 个提交。你这提交太多了
StephenHe
2024-12-07 20:59:03 +08:00
rebase 也好,merge 也好,都是为了把主分支内容同步到自己分支。楼主的问题是太长时间不同步代码导致了很多冲突。
StephenHe
2024-12-07 21:02:58 +08:00
test ,master 向子分支 rebase ,子分支向 test ,master 只通过 merge ,让时间线看起来是一个正向操作。
mark2025
2024-12-07 21:04:56 +08:00
@hetal 我是全局 git config --global pull.rebase true ,拉取合并之前就 rebase
GBdG6clg2Jy17ua5
2024-12-07 21:09:07 +08:00
1.你是如何做到 2 周 commit 200 多次的?
2.我习惯 merge
3.rebase 还是 merge ,看团队规范,大家怎么做,你就怎么做。
c0t
2024-12-07 21:25:47 +08:00
才 2600 行就 200 次感觉 commit 里都是无效信息…写了点就 commit ?中间可能压根就没法用吧?喜欢这么用的话就用 branchless 的方法,detach 然后准备合并再 squash
c0t
2024-12-07 21:27:06 +08:00
git branchless 这样的工具应该就是给你现在这种用法设计的
XiLemon
2024-12-07 21:27:09 +08:00
比较好的做法是在开发过程中,每次开发前和每次 commit 后都 rebase 一下 master 分支。最后提交合并的时候,可以将开发分支的 commit log 进行合理的 squash 。
thevita
2024-12-07 21:29:34 +08:00
我的习惯,如果预期自己本地的分支会持续很长时间不能合并的话,此时应该考虑

1. 看能不能拆成多个 提交分批合并, 对 review 的人也友好点
2. 每天上班第一步 pull --rebase
3. 最后 提交 mr 前, 对提交进行 squash 整理,保证每个 commit 都是完整且正确的
gesse
2024-12-07 21:32:53 +08:00
其实我想说,OP 提交两百个 commit 到 master/main ,已经不是 rebase 和 merge 的事情了。
lrh3321
2024-12-07 21:40:43 +08:00
如果你 200 多个 commit 都对应 1 个 Feature 的话,应该先把提交合并了。rebase 的时候就没那么痛苦了。
hanxu317138
2024-12-07 21:47:36 +08:00
最新进展~~~把 rebase 搞了一下. 成功回到了 1 个 commit,同步到最新的功能.
zbowen66
2024-12-07 21:56:50 +08:00
@zeromake #8 搜一下 git rerere
rrubick
2024-12-07 21:57:24 +08:00
@nightwitch #6
@zeromake #8
我想我可能知道为啥同样地方冲突我要解决多次了。
之前我都是 pull rebase ,后来发现 merge 的时候要重复解决一个地方,后来就换 pull merge 了

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

https://ex.noerr.eu.org/t/1095752

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

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

© 2021 V2EX