如果你是使用git作为版本控制工具,那么github基本上是必备的网站,github可以托管你的git版本库,作用 类似于SourceForge和Google Code,github的界面是非常人性化的,由于git本身会比svn来的复杂,所以在操作上github会比SourceForge来的难点。

GitHub.Com是什么?
GitHub可以托管各种Git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pull request”机制向项目负责人申请代码合并。已经有人将GitHub称为代码玩家的MySpace。GitHub主要用Rails实现。

Git是什么?
The stupid content tracker,傻瓜内容跟踪器。Linux 是这样给我们介绍Git的。Git是用于Linux内核开发的版本控制工具。与常用的版本控制工具CVS, Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。作为开源自由原教旨主义项目,Git没有对版本库的浏览和修改做任何的权限限制。它只适用于 Linux / Unix 平台,没有Windows版本,目前也没有这样的开发计划。

GitHub支持SVN?
GitHub支持SVN版本控制,只不过是只读的,不能提交。

如何用SVN检出GitHub上的项目?
kissy项目:svn checkout http://svn.github.com/kissyteam/kissy.git
tinymce项目:svn checkout http://svn.github.com/tinymce/tinymce.git

1.在github上创建一个新的版本库

github首页,点击“create a new repo”按钮:

这样一个新的版本库就创建完毕了。
接下来我们需要本地版本库和远程版本库(github上的)进行通信,还需要一些配置。

2.ssh配置

想要让本地版本库与远程版本库通信,需要配置下SSH key。

2.1检查计算机上是否已经有SSH key
  1. cd ~/.ssh

如果出现““No such file or directory”或类似的语句,说明缺少ssh的key。

2.2创建个新的SSH key
  1. ssh-keygen -t rsa -C "your_email@youremail.com"

比如明河机子上的

  1. ssh-keygen -t rsa -C "minghe36@126.com"

会出现类似下图的提示:
github快速使用指南—git学习笔记
直接按下“enter”键即可,然后输入密码。
github快速使用指南—git学习笔记
一切顺利的话,你可以gedit .ssh/id_rsa.pub文件,复制里面的key码。

2.3增加ssh key到github上

第二个按钮

点击SSH keys

留意并不需要填写title,github会自动生成,直接把复制的key黏贴到key输入框确定即可。

2.4配置下git的用户名和email
  1. git config --global user.name "XXX"
  2. git config --global user.email "XXX"

配置结束。

3 新建一个项目并进行配置

3.1创建本地新项目工作树
  $ mkdir new-project
  $ cd new-project
  $ git init
  $ git add README
  $ git commit -m 'first commit'
定义远程服务器别名origin
  $ git remote add origin git@github.com:xxx/new-project.git   
本地和远程合并,本地默认分支为master
  $ git push origin master  

GitHub网站上就可以看见了, http://github.com/xxx/new-project

3.2 更新文件
  $ vi README
自动commit更改文件
  $ git commit -a     
更新至远程
  $ git push origin master

3.3创建和合并分支

  $ git branch 显示当前分支是master
  $ git branch new-feature  创建分支
  $ git checkout new-feature 切换到新分支
  $ vi page_cache.inc.php
  $ git add page_cache.inc.php
Commit 到本地GIT
  $ git commit -a -m "added initial version of page cache"
合并到远程服务器
  $ git push origin new-feature

如果new-feature分支成熟了,觉得有必要合并进master
  $ git checkout master
  $ git merge new-feature
  $ git branch
  $ git push 
则master中也合并了new-feature 的代码

再登录到GitHub可以看见"Switch Branches"下的分支选项:



GitHub还有一个很实用的功能,查看开发进程网络图(Network):