GitHub 入门与实践

GitHub 提供的主要功能

Git仓库

我们可以建立任意个git仓库,但需要建立只对特定人物或只对自己公开的私有仓库需要支付费用

https://github.com/plans

Organization

通常来说,个人使用使用个人账户就足够了,但对公司来说建议使用Organization账户。优点在于可以统一管理账户和权限,还能统一支付费用。
如果只使用公开仓库,也可以使用Organization账户。

Issue

Issue功能是将一个任务或问题分配给一个Issue进行追踪和管理。
在github上,每当进行Pull Request都会同时创建一个Issue。
每一个功能更改或修正都对应一个Issue,讨论或修正都以Issue为中心进行。
只要查看Issue,就能知道和这个更改相关的一切信息,并以此进行管理。
在Git的提交信息中写上Issue的ID,GitHub就会自动生成从Issue到对应的链接。
只要按照特定的格式描述提交信息,还可以关闭Issue。

Wiki

Wiki功能可以让任何人都能随时对一篇文章进行更改并保存。
该功能常用于开发文档或手册的编写。
支持克隆到本地编写
更改的历史记录也会被保留

Pull Request

开发者向GitHub仓库推送更改或功能添加后,可以通过Pull Request功能向别人的仓库提交申请,请求对方合并
Pull Request 送出后,目标仓库的管理者能够查看Pull Request的内容及其包含的代码更改。
GitHub还提供对Pull Request和源代码前后差别进行讨论的功能。

Git的导入

初始设置

设置Git使用的邮箱和密码

1
2
3
4
5
6
7
8
git config --global user.name
git config --global user.email
#查看时候设置成功
~/.gitconfig
#让命令的输出拥有更高的可读性
git config --global color.ui auto

设置SSH Key

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#创建SSH Key
“ssh-keygen -t rsa -C "your_email@example.com"
Generating public/private rsa key pair.
Enter file in which to save the key
(/Users/your_user_directory/.ssh/id_rsa): 按回车键
Enter passphrase (empty for no passphrase): 输入密码
Enter same passphrase again: 再次输入密码”
#查看公开密钥
cat ~/.ssh/id_rsa.pub
#测试是否成功
ssh -T git@github.com

操作

git init 初始化仓库

执行该命令会生成.git目录
.git目录存储管理当前目录内容所需的仓库数据

git status 查看仓库状态

git add 向暂存区中添加文件

git commit 保存仓库的历史记录

1
2
3
git commit -m "提交信息"
//修改提交信息
git commit --amend

如果想描述更多信息 不加 -m 直接执行命令

git log 查看提交日志

1
2
3
4
5
6
7
8
9
10
11
12
//显示简述信息
git log --pretty=short
//指定指定文件或目录
git log 文件名或目录
//显示文件的改动
git log -p
//文件提交日志以及提交前后差别
git log -p 文件名或目录
//查看当前仓库执行过的操作日志
git reflog
//查看修改后的提交日志
git log --graph

git diff 查看更改前后差别

1
2
//查看工作树和最新提交的差别
git diff HEAD

git branch 显示分支一览表

git checkout -b 创建、切换分支

1
2
3
4
5
6
7
git checkout -b feature-a
//与上面效果一致
git branch feature-a
git checkout feature-a
//切换回上一分支
git checkout -

git merge 合并分支

1
2
//记录本次分支合并
git merge --no-ff feature-a

git log –graph 以图表形式查看分支

git reset 回溯历史版本

1
2
//让仓库的HEAD、暂存区、当前工作树回溯到指定状态
git reset --hard 哈希值

git rebase -i 压缩历史

git remote add 添加远程仓库

git push 推送至远程仓库

git clone 获取远程仓库

git pull 获取最新代码

学习git 的网站

http://git-scm.com/book/zh/v1
https://github.com/schacon
http://pcottle.github.io/learnGitBranching
http://try.github.io

GitHub的功能

键盘快捷键

项目页 shift + / 查看所有键盘快捷操作

按语言筛选本日/周/月的热门仓库/开发者

https://github.com/trending

辅助

hub命令

https://hub.github.com/

Travis CI

http://travis-ci.org

coveralls 检测代码覆盖率

http://coveralls.io
http://lemurheavy.com

jenkins 持续集成服务器

http://jenkins-ci.org