V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
1000copy
V2EX  ›  问与答

git 能火是人性的光辉

  •  
  •   1000copy · 2016-04-23 22:12:24 +08:00 · 2865 次点击
    这是一个创建于 3167 天前的主题,其中的信息可能已经有所发展或是发生改变。

    闪开让我来。

    依我看,说 git 好的,都没有说到点子上。说 git 不好的,可能真是不懂 linus 创造 git 的上下文。要是拿企业内开发的上下文来看 git ,可是看不出什么好的。我呢,也就是试着去懂吧。

    =======

    我觉得这问题不能仅仅考虑技术,得考虑人。 我暂时忘掉 SVN ,为了 Git 而学习 Git ,以 Linus 的思维替代我的思维。然后我发现了如此深刻的人性洞察和简单的应对方法。 linux 的工作流使得 git 是显然必须的。以下内容是我看了 linus 在 google 的演讲后写的,因此很多就是对 linus 思想的 DUMP 。

    1. 自洽的、最少依赖的个人工作得到支持。 1000 多人的 Linux 开发团队是分布在世界各地的,使用 git 也就不必依赖中心服务器、不必需要很少的网络。就在自己的电脑上就有完整的仓库,可以做任何版本管理,除了分享代码。 SVN 显然是不合适的,因为单点故障大家甚至无法提交,更加无法开分支,这是无法忍受的。
    2. 剔除害群之马很简单。如果 Linus 经过观察,发现有些程序员特别容易出漏子,那么封杀的办法就是不必拉取即可。实际上 Linus 就是这样干过。如果是 SVN ,就变成了撤销惹麻烦的开发者的账号或者限定他的访问范围,并且从仓库中移除麻烦的代码提交。就是说,封杀的方法在 git 而言,是不做某事即可, SVN 是做一系列事情才可以。一正一反,大家可以体会一下。 Linus 喜欢前者,并且得心应手。这样的工作流程就避开了很多“政治”问题,让他的集成代码过程变得主动。
    3. 可以使用信任网络。 Linux 太大了,不可能完全看完补丁代码的方式来识别信任,这个 Linus 曾经干过,最后的结果当然是放弃。如果发现有些程序员特别优秀,他只要选择拉取他们的实现。这些程序员也只是拉取他们信任的程序员的实现。这样的信任网络是可以层次化的,因此对应于 1000 多人的开发者来说,这样做确实可以通过分层的信任网络达成大规模的团队协作。如果是 SVN ,我不知道如何做可以更好 4.轻量的分支开销鼓励大量被使用。对于这样的团队,为了敏捷的迭代,如果有想法就分支(这样的开发隔离想法是很有价值的),那么在 svn 上分支是海量的并且全局的大家互相影响,因此是要命的。而对于 Git 总数当然是海量,但是每个人的分支都在自己的仓库内,不会影响到他人。且分支无需连接服务器,因此是飞速的。

    所以,对于 Linux 团队来说, Git 是必须的。特别是它的分布式,可以帮助建立信任网络,减少政治问题。它的设计,首先是关于人的,关于最佳的工作流程的、技术这是这些思想的完美载体。 Linus 不仅仅创建了 Linux ,也实际上管理着一个巨大的团队,做法就是用一套工具提供信任网络和少政治的工作流程,从而可以不管。说 Linus 是此团队的“仁君”,并非缪赞。想想混乱的现实世界,我确实对这个高手团队的管理方法感到敬佩。

    这解释了开源代码项目使用 git 的热潮。它符合人性的光辉。 ==============技术上的支持 ##自身优势

    1. 自己可以玩。服务器下架,启动不了,客户端离线,都可以继续工作。什么都不缺
    2. 分支。随时开分支以便实验想法,不干扰别人
    3. 大部分都可以本地,本地就是快
    4. 提交粒度大小随意,最少一行,参见 hunk

    ##伙伴优势

    1. github 太火,人多高手多,热闹
    2. github 社交特性,引发 PK ,不再一个人

    ##对手形势 我就用过 svn 和 git ,就比较他们两.svn 已经药丸 https://www.google.com/trends/explore#q=git%2C%20svn&cmpt=q&tz=Etc%2FGMT-8

    这些年企业内的开发流程乏善可陈,开源界红红火火,那些整日贫乏的面孔,不去学习开源界的性感怎么办。所以, git 就这么火了呗。

    10 条回复    2017-07-18 18:35:22 +08:00
    tracyone
        1
    tracyone  
       2016-04-23 22:36:00 +08:00 via Android
    好东西懂得人自然懂。
    ming2281
        2
    ming2281  
       2016-04-24 00:31:47 +08:00
    当初 github 如果同时支持 hg,说不定 hg 也会火
    :)
    vm
        3
    vm  
       2016-04-24 00:39:05 +08:00   ❤️ 2
    看这篇文章的末尾部分,”关于 Git 的礼节“。
    http://www.yinwang.org/blog-cn/2015/03/03/how-to-respect-a-programmer
    des
        4
    des  
       2016-04-24 07:27:24 +08:00 via Android
    二进制文件还是不太适合用 git
    tyfulcrum
        5
    tyfulcrum  
       2016-04-24 09:15:44 +08:00 via iPhone
    我觉得 hg 要简单好用一些…奈何 git 用的人多。
    Felldeadbird
        6
    Felldeadbird  
       2016-04-24 10:41:21 +08:00 via iPhone
    其实主要还是分布式和分支实用
    julyclyde
        7
    julyclyde  
       2016-04-24 19:54:44 +08:00
    连 cvs 都能火,还有啥不能火的
    这世界门槛低
    ChaosPark
        8
    ChaosPark  
       2016-04-24 22:24:16 +08:00
    @vm 王垠变化比较大啊,关于 Linux 和 Unix 的观点完全和过去不同了。不过我还是更加同意他现在的观点。
    mengzhuo
        9
    mengzhuo  
       2016-04-25 05:48:50 +08:00 via iPhone
    @ChaosPark 关键是他不知道自己早就成了 worse is better 的受害者
    1000copy
        10
    1000copy  
    OP
       2017-07-18 18:35:22 +08:00 via iPhone
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2988 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:10 · PVG 22:10 · LAX 06:10 · JFK 09:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.