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

有没有比 git 简单实用的版本管理工具?

  •  
  •   kurtis · 2014-07-24 16:11:36 +08:00 · 12198 次点击
    这是一个创建于 3773 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用git, 就像开车的人都得像修车工一样非常熟悉汽车各种零件和构造,有必要吗?

    难道没人觉得git异常复杂吗?还是大家觉得用git够拉风,谁也不好意思指摘它的缺点?

    有没有实现git多数常用功能的替代方案。
    VSS就不用提了,一方面已经被官方淘汰了,替代的新版本则和VS,SQL SERVER深度绑定。
    72 条回复    2014-07-30 23:33:35 +08:00
    victor
        1
    victor  
       2014-07-24 16:14:33 +08:00   ❤️ 2
    您说的是svn和cvs吗。。。。
    canesten
        2
    canesten  
       2014-07-24 16:15:16 +08:00   ❤️ 1
    小项目SVN足矣
    kurtis
        3
    kurtis  
    OP
       2014-07-24 16:16:12 +08:00
    @victor 根据我经验 大概也只有svn,cvs(主要是svn)可以搞搞了,但是想看看大家有什么更好的点子,或者更好的实践。
    likaci
        4
    likaci  
       2014-07-24 16:16:36 +08:00
    可以用图形化界面的Git 比如SourceTree
    sampeng
        5
    sampeng  
       2014-07-24 16:17:22 +08:00
    git还复杂。。。就没有比他简单的了。。。
    不排除大波跟风。但实际上。git的理论,解决多分支是神器。没有分支的情况。啥都可以。。。
    yellowV2ex
        6
    yellowV2ex  
       2014-07-24 16:17:44 +08:00
    git有图形客户端呀,客户用的话,只要会 右键-commit 就行啦,跟SVN一个样嘛
    coosir
        7
    coosir  
       2014-07-24 16:18:17 +08:00
    每个小版本打个包,版本和commit体现在文件名
    kurtis
        8
    kurtis  
    OP
       2014-07-24 16:18:49 +08:00
    @likaci 其实正在用,的确是比起土生版方便了很多,但是一样的,需要你有相当的git基础经验,换言之,这个方便只有已经很熟悉git的人才能体会出来。
    mechille
        9
    mechille  
       2014-07-24 16:18:55 +08:00
    git已经简单到不行了。。。花点时间了解一下你就不会这么说了。

    至于每个目录下都生成一个文件的辣鸡svn,简直不能忍
    canesten
        10
    canesten  
       2014-07-24 16:19:00 +08:00
    用过Perforce也还可以
    比SVN好一些
    kurtis
        11
    kurtis  
    OP
       2014-07-24 16:19:39 +08:00
    @coosir 谢谢,一瞬间让我感到了浓浓的怀旧复古风!!
    Jeremial
        12
    Jeremial  
       2014-07-24 16:19:47 +08:00
    命令行的git只要熟悉那几个简单的命令就够用了, 还嫌复杂吗?
    我在用git之前没用过svn, 但是从用了git之后,再用svn, 感觉svn确实没有git好用, 尤其是分支合并功能
    mechille
        13
    mechille  
       2014-07-24 16:24:04 +08:00
    @kurtis 撸主,我觉得你认为复杂是因为你没花太多心思,反言之,不花心思什么工具用起来也不能说顺手。

    其实就日常应用来说无非就是:搭建服务端 -> 配置服务端(改几个文件的事) -> 客户端克隆。

    如果嫌麻烦,直接用GITHUB。前面的服务端都省了,直接开个帐号克隆就是了
    h2ero
        14
    h2ero  
       2014-07-24 16:27:05 +08:00
    简单的不够强大, 比如现在工作用的hg(mercurial),git还好吧, 强大灵活。
    chmlai
        15
    chmlai  
       2014-07-24 16:30:04 +08:00
    hg
    jsonline
        16
    jsonline  
       2014-07-24 16:31:35 +08:00
    手动复制备份吧
    9hills
        17
    9hills  
       2014-07-24 16:31:42 +08:00
    我不觉得svn比git简单。。。
    TankyWoo
        18
    TankyWoo  
       2014-07-24 16:35:01 +08:00   ❤️ 1
    不熟悉内部原理,你永远就是一个搬砖的

    任何行业都是这样
    assassinpig
        19
    assassinpig  
       2014-07-24 16:38:03 +08:00
    clearcase p4
    tonyluj
        20
    tonyluj  
       2014-07-24 16:40:20 +08:00
    git属于一个小时就能基本掌握的tools,基本的功能会用就可以了

    好比学C++,不需要每个特性都很熟悉,也不用了解装载运行的时候调用某个函数时指向栈顶的ESP寄存器是怎么处理的
    initialdp
        21
    initialdp  
       2014-07-24 16:44:30 +08:00
    hg
    wgjtyu
        22
    wgjtyu  
       2014-07-24 16:45:16 +08:00
    用惯了Git后,会觉得SVN的分支功能速度慢,很难用
    csensix
        23
    csensix  
       2014-07-24 16:56:13 +08:00
    用git就和用vim一样,习惯了就会舍不得放弃。
    p2p
        24
    p2p  
       2014-07-24 17:00:35 +08:00
    git 已经很简单了

    兰州这个情况,会 fetch 和 push 就可以了
    kokdemo
        25
    kokdemo  
       2014-07-24 17:01:26 +08:00   ❤️ 1
    我觉得git比svn好用多了……
    asxalex
        26
    asxalex  
       2014-07-24 17:11:26 +08:00 via Android
    起步比较晚,所以没用过其他版本控制工具,直接用的git。虽然没对比,但感觉git确实好用。
    zouxcs
        27
    zouxcs  
       2014-07-24 17:21:50 +08:00
    svn/cvs手动merge的时候简直是灾难
    FatGhosta
        28
    FatGhosta  
       2014-07-24 17:24:24 +08:00   ❤️ 1
    正确答案是ctrl-C和ctrl-V
    huawuya
        29
    huawuya  
       2014-07-24 17:31:23 +08:00
    @mechille 已经是老黄历了,SVN早就改成在根目录下只有一个svn目录了

    用图形客户端的话,不考虑分支和push,git和svn差不多
    Tink
        30
    Tink  
       2014-07-24 18:03:22 +08:00 via iPhone
    dropbox
    bingwenshi
        31
    bingwenshi  
       2014-07-24 18:45:48 +08:00   ❤️ 1
    我们不招连git都用着困难的工程师
    wuxqing
        32
    wuxqing  
       2014-07-24 18:48:16 +08:00
    @FatGhosta ctrl-C和ctrl-V 在多人开发时,会很痛苦的
    FatGhosta
        33
    FatGhosta  
       2014-07-24 18:49:17 +08:00
    @wuxqing ...我这明显是调侃啊。。。git多好用啊。。
    wuxqing
        34
    wuxqing  
       2014-07-24 18:50:25 +08:00
    git简单使用也就几个:clone、pull、push、fetch、merge、checkout。多用几次就熟悉了
    wuxqing
        35
    wuxqing  
       2014-07-24 18:53:31 +08:00
    @FatGhosta 看来我缺少幽默感,代码写多了的节奏,呵呵
    jiyinyiyong
        36
    jiyinyiyong  
       2014-07-24 18:58:06 +08:00   ❤️ 1
    楼主理解的角度不同..
    Git 的确复杂, 有几次被强迫用 hg, 我发现 hg 实际上还比 Git 简单来着,
    问题在于, 需要使用 Git 那些人, 项目代码的复杂度已经高到不能够了.
    比如说不同人同时开发一份代码, 维护开发和上线不同的分支, 不用 Git 这样复杂的工具怎么搞,
    Git 的复杂度对于项目的复杂度来说已经是基础到不能够了..
    所以说简化啥啥的, 去用图形界面算了, 没人肯花那么多心思简化 Git, 简化了给谁用?
    akfish
        37
    akfish  
       2014-07-24 19:05:07 +08:00   ❤️ 1
    lz你这是懒癌晚期,得治。

    复杂分为两种,有必要的和没必要的。
    Git的复杂,显然是有必要的,也没到“异常复杂”的地步。
    lz用不到,是因为你做的事情还不够复杂,别怪工具难。

    写个hello word用记事本就够了,IDE搞这么复杂有毛用?
    Narcissu5
        38
    Narcissu5  
       2014-07-24 19:35:29 +08:00
    @mechille 每个文件夹建目录给svn带来了一项能力:可以从任何地方检出,而git必须整个检出。

    有些情况,比如和其它部门共享文档、设计图,git的分支功能完全没有意义。和windows shell高度集成的TortoiseSVN才是王道。还有一些功能,不如加锁,也只有集中式的CVS才可能做到。
    Mac
        39
    Mac  
       2014-07-24 19:37:51 +08:00
    360网盘。。。普通硬盘映射到网盘,可以恢复90天里任意一个版本。前提是。。。你对数字公司不敏感。。。
    wy315700
        40
    wy315700  
       2014-07-24 19:42:21 +08:00
    我怎么觉得git比svn和cvs都要简单诶
    softempire
        41
    softempire  
       2014-07-24 20:07:23 +08:00
    perforce非常好用,就是要钱
    只能免费20个人
    breestealth
        42
    breestealth  
       2014-07-24 21:14:19 +08:00
    @mechille 针对LZ的情况,根本就不用搭建服务器,直接一个目录git init就完事儿了。
    skydiver
        43
    skydiver  
       2014-07-24 21:17:21 +08:00 via Android
    @mechille
    @Narcissu5
    旧版的svn才会每个目录都有.svn,新版的早就不是了。。你们该升级了……
    izoabr
        44
    izoabr  
       2014-07-24 21:30:52 +08:00
    @jiyinyiyong 你中文说的真好,交个朋友吧
    yangqi
        45
    yangqi  
       2014-07-24 21:31:39 +08:00
    mercurial hg
    reorx
        46
    reorx  
       2014-07-24 22:28:02 +08:00
    xavierskip
        47
    xavierskip  
       2014-07-24 22:44:00 +08:00
    如果不分支的化,git真还是个简单的东西。
    ivenvd
        48
    ivenvd  
       2014-07-24 23:41:20 +08:00
    LZ 要的是 Dropbox 吧。
    breeswish
        49
    breeswish  
       2014-07-25 03:46:52 +08:00
    首先,git 不复杂,花一点点时间看一下 git book 就能了解 git 的基本原理和如何使用;
    其次,如果记不住 git 命令行,可以使用各种 git GUI 客户端,个人强烈推荐 SourceTree。
    再次,如果只是想本地做一下版本控制的话,本地 git init 一下就可以创建一个 repository 了,不需要什么远程服务器配置;版本控制只需 commit 即可。当然这一切在 SourceTree 下都有图形化操作,对新手来说我觉得也可以非常快速搞定。

    我觉得 svn 比 git 复杂,就拿本地版本控制来说,还得先在本地搭建一个 svn 服务器;虽然有各种一键安装工具,但仍然复杂。
    Artotria
        50
    Artotria  
       2014-07-25 08:46:50 +08:00
    git会复杂?
    windows端开发的话,git GUI或者SourceTree或者Git for Windows都很好啊;
    Linux端用终端妥妥的,不觉得svn操作起来更加麻烦么
    Artotria
        51
    Artotria  
       2014-07-25 08:47:35 +08:00
    ps:我猜楼主要的是坚果云
    jiyinyiyong
        52
    jiyinyiyong  
       2014-07-25 08:57:04 +08:00
    @izoabr 你好.. 我觉得有点穿越..
    johnnyb
        53
    johnnyb  
       2014-07-25 09:16:23 +08:00
    个人觉得,比 git 简单只有 zip 了。git 是有很多炫目的用法,用不到无视就可以了。

    简单使用,无非就是:

    add
    commit

    哪里复杂?比 svn 还省一个服务器。而且留有后路,万一你的情况变复杂,git 不变应万变。
    ariestiger
        54
    ariestiger  
       2014-07-25 09:40:20 +08:00
    其实最主要的问题可能还是缺乏耐心
    来来来,哥我推荐你把这两个教程走一遍,是真正的走一遍
    http://www.sbf5.com/~cduan/technical/git/

    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
    NUT
        55
    NUT  
       2014-07-25 09:44:38 +08:00
    Hysteria
        56
    Hysteria  
       2014-07-25 10:02:18 +08:00
    不过是懒了吧
    waitlee
        57
    waitlee  
       2014-07-25 10:03:10 +08:00
    LZ 你需要这个东西
    http://ihower.tw/blog/archives/5140
    qazwsxedc121
        58
    qazwsxedc121  
       2014-07-25 10:05:32 +08:00
    我觉得楼主说git复杂,确实在不熟悉的时候对于合并分支时会有感觉棘手的情况发生。往往一个人用git的时候并不觉得麻烦,人多了就会变得复杂,这时正是体现git的分支结构的优越性的地方。

    我觉得版本管理本来就是一件复杂的事情,并不是因为git让它更加复杂了,git反倒是这个领域中做的最好的,只是大多数人刚接触版本管理的时候从来没有考虑过版本管理的问题,大家最初都只是想要个可以记录和回溯修改的工具罢了。

    另外source tree真的很好用,在我还不太理解git的各种分支概念的时候帮了我很大的忙。
    Navee
        59
    Navee  
       2014-07-25 12:18:19 +08:00
    楼主是要SVN吗?
    Wuvist
        60
    Wuvist  
       2014-07-25 16:14:14 +08:00   ❤️ 2
    “用git, 就像开车的人都得像修车工一样非常熟悉汽车各种零件和构造”
    有这样观点的话,说明你对git,对项目源码管理的意义还缺乏了解。

    当团队有规模,或者说,个人对源码管理有追求的时候,你会发现git提供的功能,就是最简单、最实用的。

    “图形化界面”方面,上面的童鞋好像都没有提到gitlab/github/bitbucket这些,这些我认为才是git重要的图形化界面,做代码审查、合并、rollback等等不比方便。

    再配合gitlab-ci / bamboo等等持续集成软件,git让开发变得非常简单、实用。

    如果觉得“持续集成”、“git-flow”等等概念“复杂”、“没必要”的话,那么很可能是平时开发的项目规模还不够。

    几千行代码的项目,用Ctrl C + Ctrl V可能就是最简单、实用的源码管理方式。

    我这边项目源码规模近50万行,团队每天有几十次代码提交合并,没有git,gitlab、持续集成的之类工具的话,开发效率会低得多多。

    开车的人需要了解自行车、摩托车、跑车等等车辆的性能,以及适合的道路情况,而git是一个可以随时变化形态的万能车辆。

    平日都在乡间小道上骑自行车,一时间看到跑车可能第一感觉会是“花俏”、“复杂”、“不实用”;但只是因为还没有上过高速公路等其它道路罢了。
    loading
        61
    loading  
       2014-07-25 16:17:38 +08:00 via Android
    修改版.rar

    二次修改版.rar

    定稿.rar

    领导修改.rar

    最终版.rar

    最终修正版.rar

    最新版.rar

    最后修改版.rar

    死也不改版.rar

    地狱修改版.rar
    skydiver
        62
    skydiver  
       2014-07-25 16:19:00 +08:00
    用git, 就像开车的人都得像修车工一样非常熟悉汽车各种零件和构造

    看来lz没开过车。。。开车的人当然要了解汽车构造啊。。。
    kurtis
        63
    kurtis  
    OP
       2014-07-25 17:13:12 +08:00
    @Wuvist 谢谢 认真的回答
    lightening
        64
    lightening  
       2014-07-25 17:28:55 +08:00
    Git 确实很难用。
    git 的整个命令行 interface 设计的毫无一致性可言。
    删除一个分支:git branch -d
    删除一个remote:git remote remove

    hg 就要好很多。但 hg 性能还是不够好。现在还是只能用 git。
    myrual
        65
    myrual  
       2014-07-25 18:54:10 +08:00
    @lightening sourcetree 可以帮助你
    spacewander
        66
    spacewander  
       2014-07-25 19:20:09 +08:00
    比git更简单实用的版本控制……貌似就只有[hg](http://bucunzai.net/hginit/)了。其实hg跟git几乎是同时期的产物,只是hg没有git那么出名而已
    svn虽然基础命令简单……但是遇到复杂的场景就不得不用复杂的方式去解决,加之需要搭服务器才能用,即使小项目也不适合用svn。
    lightening
        67
    lightening  
       2014-07-25 20:25:07 +08:00
    @myrual GUI 操作太慢。我现在有自己的一整套 alias。
    Wuvist
        68
    Wuvist  
       2014-07-25 21:10:14 +08:00   ❤️ 1
    @spacewander hg的理念跟git还是有点本质区别,hg认为版本历史默认是神圣的,而git认为版本历史可以是任人打扮的小姑娘。

    hg相对于git的简单之处就在于默认少了跟版本历史修改相关的命令,比方说,rebase。

    但是,最终还是有N多场景需要版本历史修改;然后就得去给hg装插件,比方说mq以便修改版本历史。

    hg虽然开头方便,但最终反比git麻烦。

    git相比于hg的另一个实用之处是速度,git把操作速度视为它的功能之一去实现。

    hg的不慢跟git快到极致在实用性上是有很大差别的。

    PS:我曾经误以为hg“简单、实用”,然后用了两三年。

    cc @kurits
    vjnjc
        69
    vjnjc  
       2014-07-26 00:05:27 +08:00
    其實svn不必git簡單,主要是svn是種老技術,而老技術不需要新的學習成本所以簡單
    如果隊伍裡就你一個人,用什麼管理代碼都無所謂(甚至不用都無所謂),因為不會衝突
    如果隊伍裡有其他人,建議參考其他人的技術背景,別人用啥就用啥
    如果隊伍裡有其他人,且都和你一樣,那建議用git,畢竟用svn你也要從頭學起,還不如直接學git,現在教程、手冊都比較全
    ichou
        70
    ichou  
       2014-07-26 09:25:15 +08:00   ❤️ 2
    在我眼里
    svn 就是中央集权的暴君
    git 是多党派协作的政府

    使用难度上 没什么差别吧 在哪个国家不是一样活 习惯就好
    mengzhuo
        71
    mengzhuo  
       2014-07-27 09:15:24 +08:00
    LZ确定用过git吗?

    团队曾尝试hg,最后3个月以后放弃

    嫌按得比SVN多的
    拿着这个.gitconfig
    ```
    [alias]
    co = checkout
    cam = commit -am
    st = status
    pr = pull --rebase
    po = push origin
    ```
    还有这个shell alias
    ```
    alias st='git st'
    alias what='git diff'
    alias ok='git cam'
    alias hi='git po'
    alias get='git pr'
    ```
    spacewander
        72
    spacewander  
       2014-07-30 23:33:35 +08:00
    @Wuvist
    难怪 “Linux内核开发项目决定使用Git而不是Mercurial”
    http://zh.wikipedia.org/wiki/Mercurial
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1070 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 85ms · UTC 22:40 · PVG 06:40 · LAX 14:40 · JFK 17:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.