标题由来是轰动一时的微信游戏“全民打飞机”。
对Git的第一印象就是各种命令行(对比 git help -a 和 svn help的命令清单可知),这篇文章的目的就是希望能借助图形化的工具TortoiseGit和Gitlab,不需要太多了解实现的细节和原理就能够完成基本操作,满足日常开发的需要。就像全民飞机大战把游戏引入原先单纯的社交工具微信,为公司探索出新的盈利模式那样。

为什么了解Git

Git是一款版本控制软件,想必大家多少有所了解。这些年来,越来越多的开源软件使用Git进行版本控制,Github毫无疑问已经是最具影响力的开源项目聚集地。所以为了紧随潮流,更好的参与到开源协作中,学习和借力海量优秀的开源代码;同时为了将我们的作品推向外部,进行对外的技术交流,扩大团队知名度,掌握Git技能对我们开发者尤其必要。

如果仅仅是因为流行而转投一个新工具,难免有盲从的嫌疑。就好像操盘手不会仅因为这只股票涨了就买入,而是分析背后的原因一样(本人最近开始学习港股,感兴趣的欢迎交流^_^)。个人认为Git广为接受背后的原因在于它使得开发者与开发者、代码与代码、开发者与代码间互联互通变得容易。在刚刚过去的APEC上习大大提出一路一带的设想,很多人把它比作中国版马歇尔计划,为“一带一路”沿线国基础设施建设、资源开发、产业合作等有关项目提供投融资支持。把国内的资金和过剩的产能转化为国际影响力。今天看到一篇文章站在另一个高度,作者认为一路一带的意义更在于使得中国成为连接欧洲和亚洲的大通道。由此也印证了连接节点的重要性。综上,学习Git的另一个原因在于它不仅仅是一个版本控制软件。

Git的特点

和SVN相比,Git最显著的特点就是去中心化(分布式):

Git是没有中心服务器的,每个人机器上都是一个完整的库

理论上比集中式的单服务器系统更健壮,单服务器系统一旦服务器出现问题整个系统就不能运行了,分布式系统通常不会因为一两个节点而受到影响;

近乎所有操作都是本地执行:“可以支持离线工作,本地提交(commit)可以稍后提交(push)到服务器上”

Git适用场景

个人理解,Git是以开发者为中心,每个人都能拉取一份项目代码,添加想要的特性或者修复Bug,完了别人选择是否拉取这个更新,甚至可以主动推送回原作者的库。而Subversion则是开发者“参与”到项目中去。所以Git比较适合代码的分享和交流,而Subversion则适合以项目为中心的团队协作,两者有互补的一面。
Git的特性使得它相比SVN等其他版本控制软件更适合加入社交元素,前面提到的Github就是编程和社交结合的案例。

 

以上每一点可以单独作为一个课题来介绍,这里只根据个人的理解,谈谈让我印象最深刻的方面,不为了显得高大上而追求大而全。

之所以选择TortoiseGit来介绍,是因为它和我们团队目前工作中使用的TortoiseSVN使用习惯最为相近,学习成本低。

常用操作

好了,意识流完毕,接下来详细到每一个操作步骤的介绍git.oa.com的使用。TortoiseGit配合Gitlab,不用一个命令行完成主要操作。虽然可能不及命令行来的灵活,但相对直观也基本满足日常需要。

http://github.kainy.cn/slides/git-on-the-way.html#/3

(链接到的演示文档,也是一个托管于Github上的项目,基于reveal.js框架,通过Github Pages呈现)

 总结

打飞机这样一个大家玩烂了的游戏,引入微信好友的互动后,引发了一波打飞机狂潮,这就是联通的力量。Git让我们能够很方便的为感兴趣的项目创建分支,实验自己的新想法,然后推送回原作者,或者吸引有类似想法的人来完善这个想法。Git赋予源代码自由交流的便利性对项目的成长是十分有益的,也是真正意义上的开发者所能够受用的。

以上就是个人根据对Git的理解所作的总结,希望通过这些内容能让小伙伴们更好的认识Git并尝试使用它。

最后,这是我的Github主页:http://github.com/kainy 欢迎互fo,

还有平时练手的项目:http://github.kainy.cn/,有时候挺庆幸,这么玩着玩着也能成为程序员。

参考资料:

知乎《如何理解 Git 的分布式?》 
刘坤的技术博客 《Gitlab的使用》  。

写于异年同日:

  1. 2009:  “柠檬市场”理论的分析和应用实例(0)