本文是为了提高Symfony.cn的参与度,由我们编写的Git / GitHub介绍文章之一。

Git是什么?

Git是开源的版本管理工具(同类工具还有如:Subversion、Visual SourceSafe),可以用来跟踪、记录你的代码工作,为个人的开发及团队协作提供便利。

与SVN相比,Git具有分布式的特点,使用更灵活,速度更快(分支更轻量),仓库文件尺寸也较小,所以受到很多人的推崇。

Git的详细介绍请参考:Pro Git 中文版

用法举例

本文将说明如何向一个托管于GitHub的代码仓库提交你自己的修改(假设你在GitHub上的用户名是someone):

首先需要创建一个你拥有提交权限的代码仓库。在GitHub上,这个操作非常简单,你可以通过Web界面新建一个,或者fork某个在GitHub上已经存在的仓库。什么是fork?可以粗略理解为一个”复制动作“,复制后的仓库里保持了与被复制仓库的关联。如何fork?以symfony-docs-chs为例:访问symfony-docs-chs的页面,点Fork,稍作等待,就可以看到在你自己的帐户里新建了一个同名的代码仓库(如:https://github.com/someone/symfony-docs-chs)。

接下来,如果使用命令行工具,你需要将自己的SSH公钥添加到GitHub帐户里,以验证自己的身份,获得提交的权限。使用图形界面的GitHub for Windows可以跳过这一步,客户端会自动为你添加。

以下都是用命令行使用git的说明,如果安装了图形界面的GitHub for Windows,可以用菜单进行操作。

如果是第一次使用Git,你需要设置署名和邮箱:

$ git config --global user.name "用户名"
$ git config --global user.email "电子邮箱"

将代码仓库clone到本地,其实就是将代码复制到你的机器里,并交由Git来管理:

$ git clone git@github.com:someone/symfony-docs-chs.git

你可以修改复制到本地的代码了(symfony-docs-chs项目里都是rst格式的文档)。当你觉得完成了一定的工作量,想做个阶段性的提交:

向这个本地的代码仓库添加当前目录的所有改动:

$ git add .

或者只是添加某个文件:

$ git add some_file

查看当前的文件状态,检查是否有不应该被提交的代码,或者遗漏:

$ git status

提交代码至本地仓库,产生版本号(commit):

$ git commit -m "完成任务"

commit完成之后,在你本地的代码仓库里,就已经保存了你所作的修改了,你可以向你的GitHub仓库进行同步:

$ git push origin

如果你的本地提交次数较多,你可以在push之前合并(rebase)自己的提交,这样远端仓库的文件变动历史更易于阅读。

上面就是Git及其简单的用法,如果想深入了解,最好的办法是结合参考资料中的文档,通过实践来掌握。

参考资料