如果你是一枚Coder,但是你�知�Github,那么我觉的你就�是一个�鸟级别的Coder,因为你压根�是真正Coder,你�是一个Code��工。

但是你如果已�在读这篇文章了,我觉的你已�知�Github了。

正是Github,让社会化编程�为现实。

什么是 Github?

github是一个基于git的代�托管平�,付费用户�以建�人仓库,我们一般的�费用户�能使用公共仓库,也就是代��公开。

Github 由Chris Wanstrath, PJ Hyett 与Tom Preston-Werner三�开�者在2008年4月创办。迄今拥有59�全�员工,主��供基于git的版本托管�务。

目�看�,GitHub这场冒险已�胜出。根��自维基百科关于GitHub的�述,我们�以形象地看出GitHub的增长速度:

今天,GitHub已是:

  • 一个拥有143万开å�‘者的社区。其中ä¸�ä¹�Linuxå�‘明者Torvalds这样的顶级黑客,以å�ŠRails创始人DHH这样的年轻æž�客。
  • 这个星ç�ƒä¸Šæœ€æµ�行的开æº�托管æœ�务。目å‰�已托管431万git项目,ä¸�ä»…è¶Šæ�¥è¶Šå¤šçŸ¥å��å¼€æº�项目è¿�å…¥GitHub,比如Ruby on Railsã€�jQueryã€�Rubyã€�Erlang/OTP;近三年æµ�行的开æº�库往往在GitHub首å�‘,例如:BootStrapã€�Node.jsã€�CoffeScript等。
  • alexaå…¨ç�ƒæŽ’å��414的网站。

注册账户以�创建仓库

�想使用github第一步当然是注册github账�了, github官网地�:https://github.com/。 之�就�以创建仓库了(�费用户�能建公共仓库),Create a New Repository,填好�称�Create,之�会出现一些仓库的�置信�,这也是一个git的简�教程。

Github 安装

�置Git

首先在本地创建ssh key;

$ ssh-keygen -t rsa -C "your_email@youremail.com"

��的your_email@youremail.com改为你在github上注册的邮箱,之�会�求确认路径和输入密�,我们这使用默认的一路回车就行。�功的�会在~/下生�.ssh文件夹,进去,打开id_rsa.pub,�制里�的key。

回到github上,进入 Account Settings(账户�置),左边选择SSH Keys,Add SSH Key,title�便填,粘贴在你电脑上生�的key。

为了验�是��功,在git bash下输入:

$ ssh -T git@github.com

如果是第一次的会�示是�continue,输入yes就会看到:You've successfully authenticated, but GitHub does not provide shell access 。这就表示已�功连上github。

接下�我们��的就是把本地仓库传到github上去,在此之�还需�设置username和email,因为github�次commit都会记录他们。

$ git config --global user.name "your name"
$ git config --global user.email "your_email@youremail.com"

进入�上传的仓库,�键git bash,添加远程地�:

$ git remote add origin git@github.com:yourName/yourRepo.git

��的yourName和yourRepo表示你�github的用户�和刚�新建的仓库,加完之�进入.git,打开config,这里会多出一个remote "origin"内容,这就是刚�添加的远程地�,也�以直接修改config��置远程地�。

创建新文件夹,打开,然�执行 git init 以创建新的 git 仓库。

检出仓库

执行如下命令以创建一个本地仓库的克隆版本:

git clone /path/to/repository 

如果是远端�务器上的仓库,你的命令会是这个样�:

git clone username@host:/path/to/repository

工作�

你的本地仓库由 git 维护的三棵"树"组�。第一个是你的 工作目录,它�有实际文件;第二个是 暂存区(Index),它�个缓存区域,临时�存你的改动;最�是 HEAD,它指�你最�一次�交的结果。

你�以�出更改(把它们添加到暂存区),使用如下命令:
git add <filename>
git add *
这是 git 基本工作�程的第一步;使用如下命令以实际�交改动:
git commit -m "代��交信�"
现在,你的改动已��交到了 HEAD,但是还没到你的远端仓库。

推�改动

你的改动现在已�在本地仓库的 HEAD 中了。执行如下命令以将这些改动�交到远端仓库:
git push origin master
�以把 master ��你想�推�的任何分支。

如果你还没有克隆现有仓库,并欲将你的仓库连接到�个远程�务器,你�以使用如下命令添加:
git remote add origin <server>
如此你就能够将你的改动推�到所添加的�务器上去了。

分支

分支是用�将特性开��缘开�的。在你创建仓库的时候,master 是"默认的"分支。在其他分支上进行开�,完���将它们�并到主分支上。

创建一个��"feature_x"的分支,并切�过去:
git checkout -b feature_x
切�回主分支:
git checkout master
�把新建的分支删掉:
git branch -d feature_x
除�你将分支推�到远端仓库,�然该分支就是 �为他人所�的:
git push origin <branch>

更新与�并

�更新你的本地仓库至最新改动,执行:
git pull
以在你的工作目录中 获�(fetch) 并 �并(merge) 远端的改动。
��并其他分支到你的当�分支(例如 master),执行:
git merge <branch>
在这两�情况下,git 都会�试去自动�并改动。�憾的是,这�能并��次都�功,并�能出现冲�(conflicts)。 这时候就需�你修改这些文件�手动�并这些冲�(conflicts)。改完之�,你需�执行如下命令以将它们标记为�并�功:
git add <filename>
在�并改动之�,你�以使用如下命令预览差异:
git diff <source_branch> <target_branch>

标签

为软件�布创建标签是推�的。这个概念早已存在,在 SVN 中也有。你�以执行如下命令创建一个�� 1.0.0 的标签:
git tag 1.0.0 1b2e1d63ff
1b2e1d63ff 是你想�标记的�交 ID 的� 10 �字符。�以使用下列命令获��交 ID:
git log
你也�以使用少一点的�交 ID �几�,��它的指�具有唯一性。

替�本地改动

�如你�作失误(当然,这最好永远���生),你�以使用如下命令替�掉本地改动:
git checkout -- <filename>
此命令会使用 HEAD 中的最新内容替�掉你的工作目录中的文件。已添加到暂存区的改动以�新文件都�会�到影�。

�如你想丢弃你在本地的所有改动与�交,�以到�务器上获�最新的版本历�,并将你本地主分支指�它:
git fetch origin
git reset --hard origin/master

实用�贴士

内建的图形化 git:
gitk
彩色的 git 输出:
git config color.ui true
显示历�记录时,�个�交的信��显示一行:
git config format.pretty oneline
交互�添加文件到暂存区:
git add -i

链接与资�

图形化客户端

指�和手册

相关文ç«