真有人觉得 Git 会提高生产力?

2021-05-25 10:37:11 +08:00
 longway
以前一直觉得 Git 挺好。不过最近做了一个 feature,改了一大堆文件。这些文件别人也在改,有非常多 commit 。在 Git 合并,解决冲突,rebase 上花的时间远超以前用 svn/perforce/tfs 。


看这么多人吹 git,不知道逻辑是什么,难道一个更加复杂的东西使用时会花费更少的精力?

svn 这种中心化模式,一个人 merger 好了,其他人 sync 一下即可。现在用了 git 每个人都要管理自己的 branch,自己去做 merge 同步,真觉得这样省力?

难道你们都是一个人在开发 ?一个冲突没有?
20608 次点击
所在节点    git
170 条回复
iyaozhen
2021-05-25 14:55:58 +08:00
没用过 svn

这些文件别人也在改,有非常多 commit,有冲突,难道 svn 能自动解决冲突?

git 是需要配合 git-flow 等流程的,「 svn 这种中心化模式,一个人 merger 好了,其他人 sync 一下即可」 git 一般用一个 dev 分支来解决,大家往 dev 分支合,每天持续集成

其实个人观察来看,git 确实没有比 svn 明显的优势。但现在新人都是学的 git,用 svn 反而对团队成本大,不方便对外交流
harryge
2021-05-25 14:57:17 +08:00
楼主可以把各个程序员的 commit history 贴出来 我敢保证你们 commit 的不是很规范 没有 squash 没有 cherry pick
blackshow
2021-05-25 15:02:21 +08:00
git 的好处是互不影响,合并处理在最后
svn 如果有人功能做了一半提交了导致系统不可用直接耽误你的开发了
auroraccc
2021-05-25 15:08:06 +08:00
理解你的痛苦
1. 每次有新的 commit 之前都 rebase 一次
2. 使用 git rerere
dfkjgklfdjg
2021-05-25 15:08:16 +08:00
只能说明你们团队不适合使用 Git 来管理多人协作
fxxkgw
2021-05-25 15:09:29 +08:00
SVN 和 git 都用过好几年 个人感觉小团队几个人情况下 SVN 好用

没有非常深入用 git 一些功能加之早期一直用 SVN 习惯了吧的因素 感觉要我选择 我喜欢 svn 。。
Email
2021-05-25 15:12:55 +08:00
https://github.com/edx/edx-platform/wiki/How-to-Rebase-a-Pull-Request
别看这是一篇很小的文章,大多数人没有养成这样的好习惯。 建议大家学习

楼主所在公司是强制要求大家在 push 前,把 master 分支 rebase 到自己的分支上的。这样做的目的是杜绝 merge commit 的产生,从而产生网状的 commit history,不利于版本回溯和 bug 追踪。

看看一些优秀的开源项目就知道,别人的历史有多干净了
bk201
2021-05-25 15:20:11 +08:00
svn 不用解决冲突?没看懂逻辑。
imycc
2021-05-25 15:26:24 +08:00
以往迭代频繁的时候,对团队成员的要求是至少每周一次,把 develop 分支合并回各自的开发分支,有冲突就解决冲突,避免开发了一个月的版本

还没用过 svn,不过你描述的多人修改同一个文件的问题,不管用什么版本管理都需要解决冲突的吧?
如果是 leader 要求什么主分支 commit 不要太多,那么你们应该加一下--squash 选项,gitlab 的 MR 那里也是提供这个功能的。

不过如果整个团队都觉得用 git 太繁琐的话。。那就换回去呗。也没人逼你们用。
imycc
2021-05-25 15:28:32 +08:00
@imycc #109
第一句话打了一半。
避免开发了一个月的版本产生太多冲突,增加最后合并和调整的成本。毕竟 git 只能协助你解决版本的冲突,但没法自动解决业务逻辑的冲突。
index90
2021-05-25 15:34:35 +08:00
楼主原话:svn 这种中心化模式,一个人 merger 好了,其他人 sync 一下即可。现在用了 git 每个人都要管理自己的 branch,自己去做 merge 同步,真觉得这样省力?

一个人 merge 好了:git 里面,这个人 merge 进主干
其他人 sync 一下即可:git 里面,其他人的 branch rebase 一下主干

效果不是一样的吗?
danieladu
2021-05-25 15:34:43 +08:00
这和工具有啥关系,多人编辑多个文件,产生多个冲突那是必然事件,需要反思的不是这个工具如何如何,而是为什么你们的 leader 或者同事为什么要同时在有大量相同文件的地方做修改,本身这就增加复杂度,因为同时修改大量相同文件大概率会有逻辑冲突,可以一个 feature 一个 feature 迭代,或者同时做相关性不是很耦合的部分。如果是那种大型项目(比如大型的开源项目),避免不了大量的冲突,那就没办法了,可以时不时拉取下更新,这样也能让自己的 code 保持最新状态
ChevalierLxc
2021-05-25 15:36:14 +08:00
我觉得一点在于你们一个 PR 里有太多文件了,拆分着提交吧。这么多文件的变更,你们咋做 review?
SeanGeek
2021-05-25 15:37:21 +08:00
深呼吸 静下心 把 Git 文档过一遍
xingguang
2021-05-25 15:40:31 +08:00
这个就是传说中的白岩松体?不会吧不会吧!
Arron2021
2021-05-25 15:50:01 +08:00
中不中心化跟 git 有什么关系?想中心化所有人在一个分支上开发不就行了
doublechenpaul
2021-05-25 15:55:41 +08:00
最佳实践是一个 commit 不要写太多代码变更,分多个 commit
samingzhong
2021-05-25 16:02:06 +08:00
我们团队接近 10 个人常常同时在同一条分支上开发,倒暂时没碰过多难搞的合并。可能是楼主团队开发的功能相互侵入性比较大?那好像就是分工的问题了……
young1lin
2021-05-25 16:02:59 +08:00
@Email 学到了,感谢。
shayuvpn0001
2021-05-25 16:06:40 +08:00
你完全可以把 git 当 svn 来用,订好流程就行,中心化和去中心化自己随便选。

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

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

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

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

© 2021 V2EX