公司开发部门 GIT SVN 之争

2015-07-28 11:37:47 +08:00
 Navee
公司最开始决定是使用GIT作为版本控制 , 也都使用了4,5个月了 , 开发人员也都是20多岁年轻力壮的年轻人 , 每个组的组长也一直在做git使用的培训 , 即使是这样 , 还是遇到了非常大的阻碍 , 主要是如下几点 :
1.代码合并导致代码丢失
2.很多人对代码commit到本地后还要push到remote表示很不解
3.个别同事经常反馈commit的记录丢失
因为很多同事都遇到这3个问题 , 所以普偏反馈建议改为SVN作为版本控制 , 特别是接连好几次有同事反馈了第三个问题 , 我和运维都表示很吃惊 , 表示绝对不会出现丢失的情况 ; 但是公司的领导看到这样的反馈 , 还是建议采纳开发的建议 , 改为SVN , 然后运维就将GIT 改为了SVN

个人的一点看法:
对于第一点 , 我觉得完全是开发人员自己的问题造成的 , 如果开发人员不找到自己的原因 , SVN也会出现合并造成代码丢失的问题
第3点问题 , 当时有人说这样的问题 , 我表示也是非常的诧异的 , 我自己也是刚用git , 但是也觉得并不会出现这样的问题 , 之道有一次自己做了这样一个操作 , 在一个branch上checkout了一个commit,然后在这个commit的基础上做了一下修改,然后commit了,最后checkout 原有branch时发现 , 这个commit在branch的log上是不存在的 , 由此我猜测是不是当时那位遇到commit丢失的同事是否也是像我这样操作了 ;

总之用了一个多月的git , 觉得git在需要频繁修改bug的场景下 , 发挥巨大优势的branch比svn还是要好用很多的 ; 发表这个帖子并不是想说git 比svn好用 (LZ在一个公司使用过2年的Microsoft sourcesafe , 那种恶心的版本控制简直不想再提) , 而是提一下自己以及同事在使用git确实会遇到一些影响开发的问题 .
20613 次点击
所在节点    程序员
215 条回复
800126
2015-07-28 13:02:04 +08:00
@zythum 说得非常好,打脸啪啪的。


V2上工具党太多了,而忘了事务的本身了。
networm
2015-07-28 13:03:02 +08:00
我说一个可能丢提交的真实例子吧:合并的时候出现冲突,因为对 Git 不熟悉,使用 git reset --hard HEAD 重置后,又 git revert 了一次提交,结果这次提交变成了一次 合并的revert,丢失了合并的另一侧的所有提交。

从根本上来说,要理解每一个操作背后的原理。
在此,强烈推荐阅读 ProGit 第二版,有意愿的欢迎帮助审校中文版!

ProGit 2nd 中文版 审校协作计划 - V2EX
https://v2ex.com/t/202180
yuankui
2015-07-28 13:07:13 +08:00
人自己的问题,但是处于自我保护意识,又不敢承认
另外由于人都有惰性,学了svn,为什么还要我学git?

因此当出现一点问题,就将所有的问题都推到工具身上,实际上是人的问题.

另外公司领导,绝不应该干涉技术,如果他不懂技术的话...
Biwood
2015-07-28 13:08:51 +08:00
以前的公司用 SVN ,新公司用 git ,我觉得 git 比 SVN 好太多了啊,你所说的冲突,我在 SVN 上遇到冲突的情况比 git 上多得多,而且绝大部分是跟开发人员本身的素质相关的,只要操作得当,基本不会出问题。
mahone3297
2015-07-28 13:09:35 +08:00
@Navee checkout这样说,也说不清楚。不如,你把所有操作的command,全都记录下来,大家一看便知,哪里有问题。
有些操作,是不能做的。这不是设计的问题,这是思想,是哲学的问题。
比如,linux下面,root用户,你执行 `rm -fr /` 可以执行吗?可以执行。因为linux的哲学是,认为你知道你自己在干什么。git也一样。你想怎样,都可以,我们认为你知道你在干什么。
我的理解就是,你们那边的一批人,不去理解git,也不愿意学习,然后就乱用,最终导致了这样的结果。
Andiry
2015-07-28 13:11:07 +08:00
@andyhuzhill 比如我自己做内核开发,跑测试的时候
mongodb
2015-07-28 13:13:01 +08:00
好的好的你们用git的都好人,我们用svn的都该死,我们用svn我们的公司明天就倒闭,你们用git你们明天就上市,个个都是CEO,ok?
ooh
2015-07-28 13:14:25 +08:00
事在人为,说commit丢失的你就该让他多练练姿势
chmlai
2015-07-28 13:17:14 +08:00
@zythum 分支就是绝对优势.
superbear
2015-07-28 13:25:19 +08:00
用git会出现第二个问题,那是因为他是分布式的。。
cxe2v
2015-07-28 13:28:34 +08:00
啧啧啧,哪里都缺不了靠工具秀优越的人
xieweizhi007
2015-07-28 13:35:48 +08:00
commit还会丢失?
proudzhu
2015-07-28 13:40:02 +08:00
初略看了下,LZ 公司提交不要 code review ?
Felldeadbird
2015-07-28 13:43:17 +08:00
明显是自己操作失误导致丢失commit的。让那些人好好回去学GIT吧。估计他们也不打算学。
newghost
2015-07-28 13:47:29 +08:00
个人认为对于团队而言Git没有SVN好用;

首先Git要比svn复杂的。

Git强调差异化,强调版本分化,进而导至commit和merge比较复杂,对于大型团队而言反而会降低工作效率,增加工作量。

SVN强调版本统一,不同发行版分branch,比较适合团队使用。

还有我们用perfoce,一个类SVN的东东。
hyzjshwo
2015-07-28 13:51:22 +08:00
本地 自己用git呗,提交用svn呗?
Mark24
2015-07-28 13:52:48 +08:00
表示一张图搭配Source Tree客户端
使用Git简直是15分钟内学会的事情
从此可以在家写代码了
imzshh
2015-07-28 13:56:11 +08:00
很有可能是 git push --forse 了。
我待过的几个团队,都是用issue-number作为分支名的,然后code review/测试通过后由专人合并到develop或者其它分支,从来没有遇到过commit丢失的情况。
swolf119
2015-07-28 13:56:29 +08:00
那些都是很好很好的,可是我偏不喜欢
再漂亮的女人,我不喜欢,你什么都不是
适合的才是最好的!
realpg
2015-07-28 13:58:55 +08:00
我是坚定的git党。
无论我多喜欢git,我都会在我公司的项目首选用svn,除非几个高级程序员自己搞的东西,在所有人都确认非常精通git的情况下才会使用git作为案例的版本控制工具。


1.svn的模型简单粗暴,对于入门培训只需要1分钟,基本日常开发就需要update,commit,任何人给讲3分钟就明白svn是怎么回事儿,不犯错,不出类似楼主这种的问题,对公司来说就是最大的节约成本

2.svn的线性追溯容易。数字化的版本号,一般的IDE集成/GUI内都可使用版本号和时间点来简单描述,对于尤其是团队内有比较一般的普通程序员的时候使用起来问题更少

等等等等。反正一句话,项目用git可以,我要确认所有参与项目的人都已经精通git,且基本预测项目不会引入更多的人,才会拍板。

我从0到精通svn自用了一个小时,我从0到精通git用了小半年。我自认为在技术领域学习能力比较强,还有很多不强的人让他们折腾git就是浪费公司时间

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

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

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

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

© 2021 V2EX