V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Navee
V2EX  ›  程序员

公司开发部门 GIT SVN 之争

  •  
  •   Navee ·
    navee · 2015-07-28 11:37:47 +08:00 · 19318 次点击
    这是一个创建于 3393 天前的主题,其中的信息可能已经有所发展或是发生改变。
    公司最开始决定是使用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确实会遇到一些影响开发的问题 .
    第 1 条附言  ·  2015-07-28 14:02:21 +08:00
    看了大家的回复 , 统一回复几点 :
    1. 我指的提交丢失并不是物理上的丢失 , 也不是git的问题 , 而是在checkout某个版本之后基于这个版本做了修改然后提交 , 回到master之后在log中找不到这个历史版本上提交的版本了 , 根据刚才的回复我试了一下 , 再次checkout之前修改的版本 , 可以看到HEAD detached at xxx的提示 , 我没有注意到这点是我的疏忽
    2.根据回复中提到的强制提交造成提交丢失 , 我觉得是有这种可能的 , 但是当时公司也没有人站出来查证这个问题 , 在出现过几次这个问题之后没有解决领导才决定切换到svn
    3.在这里我们不是讨论svn和git谁好用 , 只是讨论一下实践中遇到的一些问题 , 那些说用不好git的同事应该开除 , 我并不这样认为 , 我认为不论是svn还是git , 那些合并不好代码导致其他人代码丢失的同事才是有问题的 , 他们有他们的不足 , 但是并不在我们的讨论范围之内 , 因为我们没有那么多理想的环境 , 那些大公司的混子 , 我也不是没见过
    4.那些说我git基础知识差的我也认了, 但是各位 : 作为一个版本控制系统 , 做的最多的不就是提交,合并,更新吗?有多少人会为了这几个基本的操作去系统的研究学习gitpro ? 作为初学者 , 我也不信你有那么强的学习能力把git pro中的每一种场景都结合到日常的操作之中 , 就像开始回复的那些朋友 , 一口咬定git绝对不会丢失提交的占多数 , 能说出强制提交确实会造成提交丢失的也就只有那几个人 , 开始回复的那些朋友 , 你们精通git吗?
    5.git确实有git的优点 , 但是那些把svn说的一文不值的人 , 还抨击使用svn的用户 , 你们未免太自大了 ? 请记住 : 存在即为合理 ;
    第 2 条附言  ·  2015-07-28 18:22:10 +08:00
    我觉得你们真没意思 , 都说了并不是在争论GIT SVN谁比谁更好 , 而是讨论团队中使用git的现状 ;
    我相信大多数团队都在git的推广过程中都踩过坑 , 就如同@realpg 一样 , 作为git砖家的他也不敢在项目中首选git .
    你们有经验就分享经验 , 我作为初学者来学习你们 , 其他初学者也能学到很多东西 ; 但是回复就是一个结论 : svn垃圾 ; git屌炸天 ; 这样真的有意思吗 ?
    215 条回复    2015-07-31 15:33:38 +08:00
    1  2  3  
    codeyung
        101
    codeyung  
       2015-07-28 14:05:26 +08:00
    一句话 svn简单易用 适用范围广泛
    git 伪GDS 小众 自嗨 OK
    barbery
        102
    barbery  
       2015-07-28 14:06:04 +08:00
    git才是最优解,当然你可以用SVN。。。
    zythum
        103
    zythum  
       2015-07-28 14:06:59 +08:00
    @chmlai svn也可以分支开发。 说一个东西不好用。也需要先了解那个东西。不然容易打脸。
    zeeler
        104
    zeeler  
       2015-07-28 14:07:38 +08:00
    用git和svn都无所谓,git好处就是做分支开发方便,如果你们团队分支需求不强烈,用svn也不错,毕竟权限管理很细致
    lilydjwg
        105
    lilydjwg  
       2015-07-28 14:13:51 +08:00
    咦 svn 现在支持合并了?

    你这明显是没有看或者没有看明白 git 提示信息的问题。默认配置下,git 会告诉用户处于什么状态、可以进行什么操作之类的信息。如果遇到看不懂的消息就应该请教懂的人,或者看文档。如果理解了所有提示信息还出现这种问题就说明你们教的人有问题。
    ferock
        106
    ferock  
       2015-07-28 14:14:34 +08:00
    存在即为合理怎么成了万金油了?
    lilydjwg
        107
    lilydjwg  
       2015-07-28 14:15:05 +08:00   ❤️ 1
    @codeyung 可是我依旧不会用 svn,遇到 ! 就无解了。文档现在有中文版的了么?我是指人翻译的,不是那种读起来比英文还吃力的类机翻文字。
    lilydjwg
        108
    lilydjwg  
       2015-07-28 14:15:57 +08:00
    @ferock 因为使用这句话的绝大部分人根本不理解这句话的原始含义(别问,我也不懂)。
    Navee
        109
    Navee  
    OP
       2015-07-28 14:17:16 +08:00
    @Andiry 这是我今天我在linux环境里面复现我的操作时看到的 , 在eclipse里面这么操作并不会有任何的提示 . 作为版本控制 , 我关心的是所有的代码变化 , 平时用linux不多 , 所以习惯了在eclipse的history视图中查看最近的修改 ; 通过我描述的操作(虽然我也知道是不正确的操作) , eclipse提示成功之后在history视图中找不到任何的相关信息 , 这就是我的困惑.
    Navee
        110
    Navee  
    OP
       2015-07-28 14:22:17 +08:00
    @ferock 此处存在即为合理2点含义:
    1 . svn并没有你们说的那样不堪 , 还是有很多人需要svn的优点
    2 . 萝卜白菜各有所爱
    请勿过度脑补
    codeyung
        111
    codeyung  
       2015-07-28 14:22:22 +08:00
    @lilydjwg svn的成本颇低 包括学习 这个个人喜好吧 不过还是团队导向重要 你可以哇git没问题 但是工作的地方用svn的话也要用啊 svn有手册Java一枚 自己的代码用github 公司的项目用svn 插件支持的不错 怎么会出现Lz说的问题 好奇怪
    Andiry
        112
    Andiry  
       2015-07-28 14:25:13 +08:00
    @Navee 如果eclipse隐藏了提示,那这是eclipse的锅。这种提示是不应该隐藏的

    git作为一个Linus开发的软件,如果给出了提示那一定是非常重要的提示,不然他就不会提示。。。
    codeyung
        113
    codeyung  
       2015-07-28 14:25:21 +08:00
    @Navee 目前除了intelliJ 就在用eclipse 的mars svn插件很齐全 包括对比工具 和历史资源图 LZ 还有每个版本version ID 和具体的东东 感觉够我用了 intelliJ的git就不说了 很好很强大
    chmlai
        114
    chmlai  
       2015-07-28 14:28:19 +08:00
    @zythum svn 当然能开分支, 但是 git 的分支比 svn 方便多少? 这不算绝对优势?
    nuc093
        115
    nuc093  
       2015-07-28 14:29:58 +08:00
    我收集了下gitflow资料 并戳了个图

    http://jnuc093.github.io/gitflow/
    learnshare
        116
    learnshare  
       2015-07-28 14:31:16 +08:00
    上线之前先测试;写代码之前先 demo;用 Git 前先开个测试项目学习用法。

    多练习一下才能正式用起来,直接用导致代码丢失也是很大的问题。
    Navee
        117
    Navee  
    OP
       2015-07-28 14:31:46 +08:00
    非常同意 @realpg 的观点
    我觉得在工作中 , 你可以把自己当做git砖家 , 但是以git砖家的熟练程度来要求同事是不对的 , 除非每次在代码提交这种基础的事情上遇到了问题 , 你都乐意帮他解决(或是他乐意找你来解决) ; 所以为何不能退一步呢 ? svn 也不是一个差的选择 .
    markss
        118
    markss  
       2015-07-28 14:34:11 +08:00
    @codeyung 不小众吧,2年前接触到git后,果断放弃了svn。
    @Navee 只要没有物理丢失,总是能找回来的,在找回来的同时,也可以学习到git的妙用,用了2年git,至今觉得只掌握了git的冰山一角,哪怕是这种冰山一角,也给与了我莫大的便利。
    git粉,轻喷。
    feilaoda
        119
    feilaoda  
       2015-07-28 14:34:36 +08:00
    @zythum 用svn维护几十个分支并且经常要合并的日子,你想过没有?
    fds
        120
    fds  
       2015-07-28 14:36:15 +08:00
    提交丢失的问题善用 git reflog 就可以解决
    imcoddy
        121
    imcoddy  
       2015-07-28 14:36:59 +08:00
    个人是完全的 Git 党。虽然现在做的项目是在用 SVN 管理的,不过我自己开发的时候都完全用 git-svn 来管理。好处是本地想怎么开分支就怎么开分支,提交时也能很好地与团队兼容。

    题主丢 commit 的情况,当然很大原因是其它人没有学好用 Git 这个工具。不过话说回来,远程 Repo 设置 Master 和 Develop 不允许强推更新还是很有必要的。

    流程方面,统一用 Git-flow 的话,其实难度也不是太高的样子。当然,也的确需要组员能达成共识。
    realpg
        122
    realpg  
       2015-07-28 14:39:27 +08:00
    @Andiry
    你说到linus 我有种感觉 不是黑git
    git的设计者linus是一个很牛逼的程序员 他不太理解很多普通程序员学习他觉得很简单很理所当然的东西都很困难 尤其是对一些没有那么多开发经验 没有应用分支合并什么这些东西的场景经历的,理解很难的

    就像我们作为程序员,总觉得很多傻逼用户最基础的点点鼠标的破系统都不会操作一个道理

    我自认为技术领域学习能力一流,git这么个小工具我从0到真正敢说精通我用了小半年的时间 这都很说明问题了
    palxex
        123
    palxex  
       2015-07-28 14:41:57 +08:00
    这不叫git svn之争。这叫不懂git的和可能懂svn的之争。。。
    git学习成本本身存在而且确实比svn要高,否认这点没意义。
    行政决策所有地方都得统一换某种scm也没什么意义。
    codeyung
        124
    codeyung  
       2015-07-28 14:43:48 +08:00
    @markss 其实版本控制工具 自身的机制保证了数据在硬盘不损坏下可以回档与更新 这个是个产品就ok鸟
    可以统计一下 git 与 svn 你就会知道是不是小众鸟
    codeyung
        125
    codeyung  
       2015-07-28 14:45:06 +08:00
    这个问题不要讨论下去了 公司用什么就用什么 你想用什么写自己的东西的时候用就好了 争论这些然并卵
    Andiry
        126
    Andiry  
       2015-07-28 14:47:32 +08:00
    @realpg 确实如此

    git的命令较多,格式不统一,含义也不够明确。Linus从本质上来说不是一个对菜鸟友善和有耐心的人。
    vmskipper
        127
    vmskipper  
       2015-07-28 14:51:36 +08:00
    存在即合理 这本身就是一个伪命题 有多少不合理的东西存在。根据相关法律法规以下内容不予显示
    Navee
        128
    Navee  
    OP
       2015-07-28 14:58:25 +08:00
    @Andiry 刚刚测试了一下 , eclipse会给出提示 , 指示当时给忽略了
    @fds 谢谢 , 这个命令解决了我的疑惑
    lilydjwg
        129
    lilydjwg  
       2015-07-28 15:06:52 +08:00
    @codeyung 我坚决不同意 svn 学习成本低!没个堪读的中文教程,状态出现 ! 之后就不知道怎么办了。git 至少还有 git book,结构清晰、排版精良。而且内部原理很好懂,就算是出现非常罕见的意外状况,也可以手动给弄好。svn?谁给我一个质量和深度与 git book 不相上下的教程?

    PS: hg 似乎也没有好的中文教程。
    lilydjwg
        130
    lilydjwg  
       2015-07-28 15:08:24 +08:00
    突然想起来,你们那些用 git 的基本功能导致出问题的人,是不是用的图形界面的程序啊?而且是中文版?
    hegfirose
        131
    hegfirose  
       2015-07-28 15:15:51 +08:00
    很多时候问题出在人身上,而不是技术本身。
    leon4770
        132
    leon4770  
       2015-07-28 15:24:37 +08:00
    代码丢失要么是合并时导致要么时推送时方法有问题导致,我开发用了小半年的git还没有出现这种丢失代码的情况;
    svn和git的选择主要看公司喽,个人觉得git用时间久了还是比较方便的,特别是branch方面
    superleexpert
        133
    superleexpert  
       2015-07-28 15:31:00 +08:00
    git速度更快,从没遇到过丢失的状况。
    happypy1
        134
    happypy1  
       2015-07-28 16:00:56 +08:00
    个人感觉,本地多重功能并行开发的时候,git比svn方便。

    git只要不断的开分支就可以。

    svn的话,你得保存这个改动为patch,然后清空,做别的活。最后切换回来,又是重新patch。
    zythum
        135
    zythum  
       2015-07-28 16:05:05 +08:00
    @feilaoda 我上班就这样啊,每个项目都是打分支开发的。每周上线都是合并分支的。没什么问题啊。 我公司用svn。个人项目用git。一直没有问题。
    @chmlai 并没有差别太大。只要你网速足够快。(因为两边的分支处理时不同的。)

    我只是想说。我属于两个工具同时使用的童鞋必要有发言权。
    我只是想说。git没有你们想象的那么完美。svn没有你们想象的那个无能。两个工具都是可用的。都是好用的。
    jimrok
        136
    jimrok  
       2015-07-28 16:07:01 +08:00
    这种一哄而上的推广方式是不行的,建议先从精锐的小团队开始,慢慢铺开,让用户帮助用户。
    socrates
        137
    socrates  
       2015-07-28 16:10:11 +08:00
    svn的逻辑确实更简单,git需要深入的培训才行

    git因为分支差异,经常进入一些很特殊的场景,这个对git的掌握如果不够,很容易陷入不知所措的场景
    adaibee
        138
    adaibee  
       2015-07-28 16:57:12 +08:00
    如果公司很多人觉得不好用就换呗,svn会越用越慢,这倒是真的。
    xiaogui
        139
    xiaogui  
       2015-07-28 17:04:37 +08:00
    @palxex 同意“不懂git的和可能懂svn的之争”,但也可能是“不懂git的和不懂svn的之争”,只会提交。
    xixi10111011
        140
    xixi10111011  
       2015-07-28 17:09:52 +08:00
    从team的角度讲,如果大家都精通(真的是精通)git,可以考虑上git。 否则,还是SVN靠谱,学习成本低,简单、易上手,直观。
    unique
        141
    unique  
       2015-07-28 17:12:47 +08:00
    每次谈到这种问题就开始撕逼了。
    xiaohanyu
        142
    xiaohanyu  
       2015-07-28 17:21:10 +08:00
    什么年代了,还用 svn
    sunnysign
        143
    sunnysign  
       2015-07-28 17:37:56 +08:00
    git快捷、安心,就是难学。svn没啥好说的,分支合并啥的就是噩梦。
    feilaoda
        144
    feilaoda  
       2015-07-28 17:41:54 +08:00
    @zythum 你赢了。就因为svn合并对我来说太麻烦,我太懒,换git了。
    anubiskong
        145
    anubiskong  
       2015-07-28 18:27:30 +08:00
    svn转git初期出问题是必然, 有其是你们没有精通git的人也没有正式培训的情况下.
    如你所说问题是你们不熟悉git以及它的工作流, 那么你们解决问题的办法就只有好好去了解它, 先学会, 再期待它能解决问题, 而不是反过来. 没考驾照就上道死在路上是活该.
    svn就是坨屎, 不要想"存在即合理", 在A工具是B工具的超集的情况下, B的存在没有意义, 除非A不存在.
    holmesabc
        146
    holmesabc  
       2015-07-28 18:31:35 +08:00
    如果有新功能要同步开发, 又要稳定版发布. 或者 在家 在路上有工作需求,但网络又不行.
    svn就各种疼了

    总结,svn 很难辅助开发.
    randyzhao
        147
    randyzhao  
       2015-07-28 18:35:33 +08:00
    Git 不会用或者不适合项目需求, 那么, 换 SVN 没问题.
    没必要扯到 Git 这个工具本身.

    然后我看到这句 "但是公司的领导看到这样的反馈 , 还是建议采纳开发的建议 , 改为SVN."

    这也太不信任研发部的 leader 了吧.
    fish267
        148
    fish267  
       2015-07-28 18:49:12 +08:00
    Git 怎么鼓捣rebase的?
    surewen
        149
    surewen  
       2015-07-28 18:50:58 +08:00
    这年头居然还有人觉得svn比git好用?

    commit 和push分开,是多人协作的必然结果。
    focux
        150
    focux  
       2015-07-28 19:08:51 +08:00
    话说一般不都是从svn上往git转么。。。
    ZHenJ
        151
    ZHenJ  
       2015-07-28 19:18:24 +08:00
    好吧,我们是代码用hg,文档用svn。。。
    OpooPages
        152
    OpooPages  
       2015-07-28 19:42:23 +08:00 via Android
    我不是来讨论哪个更好的,只是有个问题一直没明白,git怎么搞精细权限控制,比如一个库,a用户部分只读,b用户全库只读,c用户部分可push,d用户全库可push...

    在不需要细分权限的库用git很爽,比如开源项目。
    kkwezard
        153
    kkwezard  
       2015-07-28 19:46:07 +08:00   ❤️ 2
    又来了。这种用什么版本控制软件的争论每次都能战个十几页。用什么版本控制软件和项目赚不赚钱,你年终奖是不是多发几个月没半毛钱关系。争赢了又能怎样,程序员这臭毛病得治。
    OpooPages
        154
    OpooPages  
       2015-07-28 20:11:40 +08:00 via Android
    @kkwezard 对头
    ghostcat
        155
    ghostcat  
       2015-07-28 20:21:50 +08:00
    就好比记事本我就喜欢notepad++这种的,VIM实在是用不习惯,各种命令
    Dongdong36
        156
    Dongdong36  
       2015-07-28 20:29:13 +08:00
    153L +1
    latyas
        157
    latyas  
       2015-07-28 21:28:44 +08:00 via iPhone
    @lilydjwg 惊现依云!
    ddou
        158
    ddou  
       2015-07-28 21:44:53 +08:00
    工具都懒得学习、用错,还能说啥
    sing1ee
        159
    sing1ee  
       2015-07-28 21:50:42 +08:00
    git本地仓库,自己搞自己的,然后合并过去。这个挺方便的。
    kingme
        160
    kingme  
       2015-07-28 21:55:35 +08:00
    我就是想知道,自己用GIT,有没有好的工具和TFS同步,因为其他人都用TFS
    happynohi
        161
    happynohi  
       2015-07-28 22:16:11 +08:00
    @OpooPages Linus 表示(精细)权限控制只是商人维护利益的借口,开源世界不欢迎(精细)权限控制。
    如果一定要在 Git 上实现精细权限控制的话,用 Hook 可以解决。
    kn007
        162
    kn007  
       2015-07-28 22:18:51 +08:00
    @realpg 有什么系统学习git的网站或教程不?
    Joming
        163
    Joming  
       2015-07-28 22:19:45 +08:00
    重在执行,人是活的。有时候一个东西必须所有人认真对待了。
    Hysteria
        164
    Hysteria  
       2015-07-28 22:20:19 +08:00
    我只是觉得我都比较熟悉使用git了,然而到了新公司又喊我用SVN,比较不开心。
    falcon05
        165
    falcon05  
       2015-07-28 22:25:31 +08:00 via iPhone
    用git的学习成本的确要比svn高,说git简单的我很怀疑你们是否真的在团队中用过,除了命令和概念,光是协作流程就有好多种,我们团队用git,成员能力一般,之前都没用过版本控制工具,遇到问题总找我,这时才想起svn的好,简单上手快
    lilydjwg
        166
    lilydjwg  
       2015-07-28 22:27:09 +08:00
    @OpooPages 这种需求只能自己写 hook 了。不过,git 和 svn 不一样,所以出现有「部分权限」的时候,是不是应该分库了,然后用子模块组装到一起呢?库和分支级别的权限控制 gitolite 已经有了,gitlab 之类的应该也支持的吧。
    loveuqian
        167
    loveuqian  
       2015-07-28 22:29:17 +08:00
    就是想用界面吧。。
    shooter
        168
    shooter  
       2015-07-28 22:50:00 +08:00
    在 rails界 git是标配啊,上手什么时候这么困难了, 学习了 git 才能有 跟github 的大神们互动的基础了

    gui 有 sourceTree 或者 https://mac.github.com/

    推荐个视频 http://haoduoshipin.com/tag/git
    networm
        169
    networm  
       2015-07-28 23:44:41 +08:00   ❤️ 1
    konakona
        170
    konakona  
       2015-07-29 01:23:20 +08:00
    总结一个:逃避责任。

    为什么?

    几个月的时间里,我跟固定的几个同事用Git开发了数个项目,我是Commit狂人,完成一个功能和修复一个bug我都要Commit,如果重要的我会Push给其他同事,并且提醒他立刻更新。

    有的时候我们会遇到需要埋头苦些数个小时,修改十几个文件的改动需求,甚至有同一个文件多次改动的,我们是Osx 用的是source tree,For Free。
    它做得很好,在Automerge的时候基本能让我们没有损失。你的同事经常代码没有是因为不会用工具,不要怪Git。

    回到我们团队的身上,我们每天Commit至少20+Push至少10+。

    我们能轻松解决你所说的问题而且是迅速的响应和解决,我们擅长用Logs快速处理代码块,因为Diff很浪费时间,我们真的很讲究效率。

    我不明白楼主你讲了那么多,不外乎就是他人的“逃避责任”这个结果罢了-。- 别再浪费你的时间,工作态度和学习动力不足就换人吧。
    konakona
        171
    konakona  
       2015-07-29 01:26:34 +08:00
    PS:
    我绝对不招一个只会SVN,并且坚持用SVN的PHPer。

    1. PHP快速开发有优势也有劣势,劣势就是在很多时候没有PM,没有质量监督,只是疯狂的增加需求然后上线上线再上线; ok,你怎么保证你不乱?branch。工具是拿来用的啊!

    2. SVN的速度慢,Git的功能全面。

    3. 不善于学习新鲜事物,掌握主流版本控制器的人,淘汰,不二话。因为我要的是能来帮忙做事一起发展的人,我不要一个固执己见却顽固不宁的人。对我和整个团队毫无益处。

    曾经我在Q上遇到个程序员想应聘我发布的PHPer岗位,刚开始聊,我就问:你会GIt嘛?他说不会,然后我说“不好意思”。他竟然反过来问我,你不是招PHPer吗?然后扯了半天反而把我教训了一顿,真是逗。

    Git是我们团队每个人都在用,而且 [乐此不彼] 的一件事——如果你不能接受或者觉得不好,那你更不应该来了啊-。- 你要我怎么跟你继续Talk下去呢。

    程序员有的时候也要想想自己。

    真心受不了,我也是程序员啊。
    railgun
        172
    railgun  
       2015-07-29 01:26:39 +08:00
    生产力是第一目的,SVN上手确实比GIT简单
    railgun
        173
    railgun  
       2015-07-29 01:29:12 +08:00
    反正git和svn也不冲突,换了svn以后,喜欢用git的还是可以继续用git来管理嘛,只是没有远程服务器而已,做好备份就行了
    konakona
        174
    konakona  
       2015-07-29 01:32:21 +08:00
    看到楼主的append,这里我也想再追加一些关于“我第一次遇到Git”时的情景。——我也觉得Git不要用!

    我用SVN多熟啊,为什么我要换一个呢?当时我参加的团队人员就2人,不多。而且没有养成良好的开发习惯,更没有频繁的需求和更具挑战的复杂业务。那我当然是安于现状继续用我的SVN。

    但是处于学习的驱动性和目的,我在6年前听到有新的热门版本控制器叫GIt,我去安装了,当时我不知道可以用https checkout,只知道用ssh clone。 为什么要用ssh啊?我是windows,为了用Git我还要装一个像Bash的东西,我根本就不会多少Linux 的东西啊,当时。

    但是随着我的职业规划和工作的变动,以及接触的项目。更多的是我参加的IT圈子,他们都在用Git。我看他们说Git的好,我曾经也跟他们争论过。慢慢的我不服,我就深入的用Git。我发现它真的太棒了……

    唯一能带动你身边的人也用Git的最直观办法:你是他上司,你要求并且命令他必须用Git,不用就滚蛋。

    将来他一定会谢谢你的-..- 不要那么娘娘腔,只care现在,每一个你的下属的职业规划你都要想的,光是在Git和SVN哪个好的层面上花时间不如有挑战点。

    现在我身边的人不仅崇拜我,还特别爱用Git。

    那你告诉我,我们之间的差距在哪里?为什么你在烦恼这个问题,而我已经遥遥领先?
    flycain
        175
    flycain  
       2015-07-29 02:01:12 +08:00
    公司的话用svn的多一点吧。
    magicyu1986
        176
    magicyu1986  
       2015-07-29 02:05:12 +08:00
    我就是感觉哈,一个版本管理工具而已,如果学习成本超过15分钟,就算了吧.一个复杂的东西在工业环境里面用太致命了.

    用GIT一是赶时髦,二是为保持社交.

    PS:竟然真有<精通GIT>这种神书存在啊.
    MrGba2z
        177
    MrGba2z  
       2015-07-29 05:17:46 +08:00
    果然战起来了。。

    我们公司用的perforce
    但时我们组有个独立的git

    然后有个教程可以绑定git和perforce
    平时自己用git操作,就会自动更新perforce那边的代码

    msg7086
        178
    msg7086  
       2015-07-29 07:10:19 +08:00
    这都能战起来。
    我也来插一脚。
    我们公司把git当svn用。
    582033
        179
    582033  
       2015-07-29 07:12:27 +08:00 via Android
    git reflog
    networm
        180
    networm  
       2015-07-29 09:09:21 +08:00   ❤️ 1
    @kingme Translate 09-git-and-other-scms client-tfs v2 by networm · Pull Request #179 · progit/progit2-zh
    https://github.com/progit/progit2-zh/pull/179/files

    点文件上方的 View 按钮以正常视图查看文件。
    iugo
        181
    iugo  
       2015-07-29 09:16:37 +08:00
    先接触的 Git, 后来接触 SVN. 先入为主, Git 很方便, 功能也足够灵活, 我们并未把 Git 发挥到极致, 但已经很好地帮助我们协作.
    qinkun1234
        182
    qinkun1234  
       2015-07-29 09:17:39 +08:00
    qinkun1234
        183
    qinkun1234  
       2015-07-29 09:18:04 +08:00
    exch4nge
        184
    exch4nge  
       2015-07-29 09:31:22 +08:00
    我觉得楼主的问题出现在目前很多软件开发团队中,并不是楼主公司的个别现象。

    在国内SVN用的公司应该比GIT多很多,虽然GIT出来已经很久了,但也有很多人不知道GIT是啥,我觉得公司决定到底用什么作为SCM都可以,如果决定换成GIT了,对GIT的相关基础培训以及前期的实际使用过程中的监督管理是必不可少的,如果执行力度不够强,就会出现换回去SVN的可能。

    GIT与SVN相比,个人觉得还是GIT优势多一些,在公司有特别的代码管理需求所以使用SVN的情况外,我觉得GIT是更好的选择。现在Gitlab也有比较方便的安装包,几年前配置个gitlab或phabricator之类的得费半天劲。但如果我所在的团队用SVN,我也不会有什么问题,也可以理解,毕竟SVN是很多程序员都会用的,我自己肯定会用git-svn来独自享受git工具带来的优势。

    不管用SVN还是GIT,我觉得团队每个人至少得学会正确合理使用代码版本管理工具,特别是不要在版本管理里放一些乱七八糟的临时文件、只有你本人用到的文件、编译过程中生成的文件等等,学会使用ignore这些临时文件。SVN的话可以用SVN Property:ignore(再不行每人的TotoiseSVN客户端设置Ignore),GIT用.gitignore文件(一些通用的可以从 https://www.gitignore.io 上生成)。分支……哎,分支就不说了,估计也用不到。

    吐槽一下,话说,我以前待的一家公司,用SVN管理,然后那个服务器硬盘前后坏了,虽然Raid过,但发现的时候已经是有两块不能用,然后去做各种数据恢复,最后还是有些项目的代码丢了,这种事发生过两三次。
    lzxl
        185
    lzxl  
       2015-07-29 09:35:08 +08:00
    本来是svn,推了两个月的git,还是换回svn。
    kingme
        186
    kingme  
       2015-07-29 10:13:06 +08:00
    @networm 非常感谢,但是我已经用过GIT-TFS了,真的有非常多的缺陷。。。。文章内容非常详尽,或许我应该再试试。。。
    daiwofei
        187
    daiwofei  
       2015-07-29 10:15:59 +08:00
    @est 啊哈哈哈哈哈,笑尿了,话说git的优点蛮多的。svn和git都用,只是初学的时候接触起来比较慢,毕竟小心翼翼的在用,怕踩坑,公司要是选svn可能大家都多多少少接触过,很放心的操作来着,如果要选git,个人觉得做一下git培训会很好!
    c0878
        188
    c0878  
       2015-07-29 10:16:50 +08:00
    谁都知道git是好东西 但是不能以牺牲开发效率为代价去推动 这种事情 你们没有解决问题要负一定责任
    我们公司以前的项目都是SVN git的普及使用推动是程序自发的 我们运维也乐意帮忙 毕竟SVN把代码集中在一起万一出现数据丢失那是无可挽回的损失
    zhfish
        189
    zhfish  
       2015-07-29 10:35:14 +08:00
    用git,敲命令行显然是很小众...
    用SourceTree,解决一切git疑难杂症...
    icecoffee
        190
    icecoffee  
       2015-07-29 11:27:28 +08:00
    ”存在即合理“ 是误解, http://www.zhihu.com/question/19851152?rf=19722988 http://daily.zhihu.com/story/1955197

    这个误解 没事不要乱用。。。
    realpg
        191
    realpg  
       2015-07-29 12:09:35 +08:00
    @kn007
    没有 我精通git的过程就是作为新手频繁使用 就会不断的遇到git的坑 然后用度娘谷哥去搜了解一下问题出在哪 搜不到的问题 就自己回溯操作历史 或者去尝试理解git的实现原理方式 去解决各种问题
    当自己把git的几乎所有坑都跳了一次后 就精通了
    wuchizhitu1988
        192
    wuchizhitu1988  
       2015-07-29 12:21:10 +08:00
    大概类似XP和Win7
    swolf119
        193
    swolf119  
       2015-07-29 13:02:01 +08:00
    @feilaoda 你是开发还是运维?
    swolf119
        194
    swolf119  
       2015-07-29 13:09:25 +08:00
    @konakona 手下有用mac装windows的你也会让他滚蛋吧
    kn007
        195
    kn007  
       2015-07-29 14:08:44 +08:00
    @realpg 其实这是一种很好的学习方法,我也是这样走过的(在其他方面)
    xmxsuperstar
        196
    xmxsuperstar  
       2015-07-29 14:09:23 +08:00
    我们团队的现状是要发布到线上的代码通过svn管理,其他配套的工具、周边的测试之类的代码放在git上面。

    楼主说的这种丢commit的情况我们也遇到过,我认为这是使用不当造成的,这种情况应该另开一个分支修改,然后合并。

    git在大团队中使用尤其是开发人员水平差异较大的情况下的确很麻烦,一般的svn会有专门的scm负责分支的合并和rebase,而用git很多时候把这些工作交给了开发,如果遇上对git不是很熟的很容易出问题。
    realpg
        197
    realpg  
       2015-07-29 16:33:18 +08:00
    @swolf119

    说到这个,前前前公司标配MBP
    然后有个哥们(市场部)自己装了双系统用windows
    然后公司IT表示这样不好 要求他干掉windows
    然后这哥们不干,说是很多东西mac用不了
    IT嫌麻烦就闹到了大领导那里表示这机器非要装windows,出问题IT不负责
    因为用windows发热比较变态,按照经验装双系统的总比纯OSX的问题多

    然后到大领导那里,大领导问那个市场的你干嘛非得装windows,全公司就你一个特别啊
    市场那哥们说,太多东西不兼容了,比如网银,比如股票软件,比如期货软件

    大领导:股票?期货!马勒戈壁去财务结账你可以滚蛋了……
    networm
        198
    networm  
       2015-07-29 17:14:23 +08:00
    @kingme 你可以先看下文章内容,仔细阅读后,确定不是自己使用的问题;其次,尝试使用最新的 git-tfs 版本,看看问题解决没有。
    另外,如果觉得翻译的文章有用,欢迎提出审校意见!https://github.com/progit/progit2-zh/issues/160
    Wangxf
        199
    Wangxf  
       2015-07-29 17:28:25 +08:00
    我第一家公司用svn,这家公司用git,其实我倒是觉得svn比较简单,git是给极客用的,我是觉得怎么方便怎么来,当然也要看公司实际情况,就像我们这个公司用git,那好啊,我就去自学git啊,有啥好争论的
    knightzorro
        200
    knightzorro  
       2015-07-29 17:44:36 +08:00
    20多岁的小年轻居然抵触git? 不在github上开几个repo怎么找工作啊。
    1  2  3  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2720 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 08:39 · PVG 16:39 · LAX 00:39 · JFK 03:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.