团队开发里频繁使用 git rebase 来保持树的整洁好吗?
巴扎黑
巴扎黑 2017-04-25 09:02:57
[Git讨论组]

用了以后, 树可以非常清晰, 某种程度上便于追踪, 但是 push --force 就多多了,
不用呢, 合并没有远程仓库被修改的麻烦, 可是追踪又不清晰...

怎样取舍? 团队里一般怎么取舍?

巴扎黑
巴扎黑

全部回复(9)
巴扎黑

除非只有自己一个人用,不然用 push --force 的都该去死。

PHPz

本地分支和远程分支的绑定(tracking),加上 rebase 策略:

[branch "master"]
    remote = origin
    merge = refs/heads/master
    rebase = true

这样一来,更新代码(pull)的时候就会自动应用 rebase 而不是产生 merge commit,除非有其他情况产生,比如三方合并造成了冲突需要人共去干预。大部分时候还是很聪明的,只要团队里的习惯都良好,那么可以保持一个非常干净漂亮的树形。

其实想让树形结构漂亮些清晰些是有很多办法的,但是首先要取决于团队用的是什么样的 Git Model,对症下药即可。在这里就无法一言以蔽之了。

另外,楼上说得对,慎用 push -f

我想大声告诉你

这应该是一个git workflow的问题,我们团队也一直在使用rebase保证commit信息的整洁,但不会用到push -f这样的操作。

关于git workflow就是一个见仁见智的问题了,下面几篇文章你可以看下,再找出一套适合自己团队的就可以了,不过最重要的是要保证团队的每个人都熟悉git,防止犯愚蠢的错误。

  • 构造干净的 Git 历史线索
  • 流传甚广的A successful Git branching model
  • Github workflow

如果使用github来团队合作的话,用好pull request,它可以解决push -f这种愚蠢问题!

阿神

每个人提交前,都应该把自己的修改rebase到服务器的最新代码之上,遵守这个规则就不会有任何问题。如果你需要force push,说明你做反了,把服务器代码rebase到你本地分支之上才会需要force push,这是错误的用法。

漂亮男人

不需要push -f啊,如果分支落后就用pull --rebase

伊谢尔伦

楼上的答案都很正,个人认为,除非某个分支只有你自己搞,你怎么rebase都是没有问题的,但是如果你在master或者develop这种分支上来rebase,估计团队里每个人都想拍死你,尤其是对git不熟悉的队友,手足无措是非常正常的表现。

rebase之后 push -f的情况只有一个,就是题主像我一样有强迫症,害怕电脑宕机、系统崩溃这种蛋疼的事情(悲惨的血泪史),完成一个特性commit之后迅速push到远程只属于你的分支上,每天为了拿到develop的新特性,才在自己的分支上rebase develop,重复执行push的操作,这个个人认为是没有问题的,毕竟你只影响了你自己(而你知道这是对的)。

PHP中文网

个人认为, 当你在某个分支进行团队合作的时候, 常用rebase真的是不合理。而且容易出问题。慎用 push --force

習慣沉默

git rebase 一般自己一个人开发时使用,用来保持提交记录的整洁。一旦上传到github后,不应该使用git rebase,不然被骂死。

怪我咯

一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。
如果你遵循这条金科玉律,就不会出差错。否则,人民群众会仇恨你,你的朋友和家人也会嘲笑你,唾弃你。

rebase的风险

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号