Git 是一款免费的、开源的、分布式的版本控制系统。旨在快速高效地处理无论规模大小的任何软件工程。
每一个 Git克隆 都是一个完整的文件库,含有全部历史记录和修订追踪能力,不依赖于网络连接或中心服务器。其最大特色就是“分支”及“合并”操作非常快速、简便。
Git的一个重要特性就是对分布式开发的支持,我们看一个简单例子:假如你把开发任务从公司带回家,晚饭后突然有了灵感,
要对代码进行修改,不巧家里的电脑不能连接到公司的文件库,你怎么下载要修改的文件?即使你将文件用优盘带回去了,
那么修改之后,又怎样提交?SVN 对这种情况没有解决方案,而 Git 可以!因为 Git 在每个用户硬盘上都创建了完整的文件库,不需
要、也不存在一个“中心服务器”,你只要能连接上任何一个团队成员的电脑,就能将代码提交到文件库去
- 秉承版本管理工具的一贯优点,可以让编码的过程中烦心事少很多,代码丢失不再存在
- 它们可以让分组项目中的协作和讨论更方便,管理更容易
- 它们可以便捷地统计出合作项目中开发者的工作量和工作时间
- 它们会让每位开发者开发过程中更有条理
- 每个人的代码随着时间积累会很有历史的厚重感,而且自然而然地形成一份个人的简历
- github本身就是一个非常棒的了解、使用和学习各种开源软件的地方
项目的派生(Fork)和拉拽请求(Pull Request)构成了 GitHub 最独具一格的工作模式,对提交代码的逐行评注及 Pull Request 构成了 GitHub 特色的代码审核。
GitHub 拥有一个非常鼓励合作的社区氛围。这一方面源于 GitHub 的付费模式:私有项目需要付费,而公共项目完全免费。这意味着 GitHub 上的大多数项目都是开源的,任何用户都有海量的开源项目选择可用来分支学习和贡献代码。GitHub 的项目关注、开发者关注、@回复、个人页面的工作项目信息等社交功能可谓完全为开源项目量身打造,大大的促进了用户之间代码的交流,非常适合于开源项目的沟通和管理。一个意外的发现是,在很多程序员的简历上,GitHub 的个人页面也已经成为了其一个重要的技能标志,这也鼓励了更多的人积极的加入 GitHub 的开源项目中。
1.更好的分享已有的代码和算法:
很多时候,我们并不需要从头去重建一套问题的算法,开放的社会化网络为我们寻求现有的解决方案提供了一个极佳的发现渠道。像 jQuery、PhoneGap、Appcelerator’s Titanium 等这样的框架为 Web、App 开发带来了无比的便利,而它们就是从 GitHub 这样的社会化平台上成长起来的。
2.为开发者提供一个最好的成长平台:
像所有成功的社交网络一样,GitHub 上早期聚集的众多优秀的项目产生了一种网络效应,吸引到更多的项目加入 GitHub 中来。对于入门者来说,这是一个最好的提高自己技能的平台。GitHub 的开放、社会化属性让用户倾向于关注更多的项目、查看更多的代码,看到一个优秀项目是如何一步步成熟的,而这正是开发者成长中相当重要的一个环节:查看优秀的代码,学习其他开发者如何解决特定的问题,了解一个项目该如何扩展。
就像一本好书一样,查看其他开发者如何解决某个问题的代码可以给我们带来很多启示,为我们提供很多我们也许都没有意识到的解决方案。GitHub 这样的社会化编程平台能够不断为我们带来惊喜。
3.民主化的代码分支与派生:
在传统的开源项目中,对代码进行分支并不是一件得到鼓励的事,Linux、Unix、Android 都是分支过多造成系统分裂的典型例子。在很多项目中,要想对项目进行某个分支,必须征得项目管理者的正式同意才能进行。
而在 Git 这样的分布式版本管理系统中,每个用户在本地都可以拥有项目的全部代码和修改历史,开发者无需任何批准即可实际进行代码分支开发并 Push 到自己的分支项目中去。如果自己的分支取得了预想的效果,用户可以将变动的代码向原始开发者进行提交请求,而原始开发者可以对这一分支的实际效果进行评估,确定代码的有效性后合并入主开发线,而不用担心第三方的无组织分支会对项目本身造成危害(这一过程被成为 Pull Request)。这使 GitHub 上的第三方开发者用户对修改和分支现有项目的积极性得到了大大的提高。
I want to live in a world where it’s easier to work together than to work alone… where every part of the software development process is a joy, And I think GitHub can help make that happen.
在我理想的世界里,协同工作将比独立工作简单的多。在那个世界中,软件开发会是一个充满欣喜的过程,我认为 GitHub 正在推进这一愿景的实现。
— GitHub CEO Wanstrath
参考:
使用 Git 管理源代码:http://www.ibm.com/developerworks/cn/linux/l-git/
Why Git is Better than X:http://zh-cn.whygitisbetterthanx.com/
面向 Subversion 用户的 Git,第 1 部分: 入门指南: http://www.ibm.com/developerworks/cn/linux/l-git-subversion-1/
An Illustrated Guide to Git on Windows:http://nathanj.github.com/gitguide/index.html