一、概述

由于项目需要,我近期较为频繁的使用 Github 对代码进行管理。

非常险的一次是,在进行某个新功能的开发时,进行了多处的修改后,我突然又不想要这个新功能了。可怕的是,这些修改中,有的直接作用与新特性的开发,而有的仅仅只是 bug 的修复。这导致简单的回退无法达到去除新功能开发的目的。

二、功能点

2.1 专一

做人做事要专一,做开发也要专一!

每条分支,每个提交只做一件事!

分支专注于某个大模块的开发(某个功能特性、某次 hotFix 等)

2.2 特殊分支特殊处理

masterrelease 等是特殊分支,千万不要在这写分支上对代码进行修改。

master 承担着整个项目源代码的管理职能;release 则承担发布的管理责任。

开发在 develop 分支上进行;bug 的修复则应发生在 bugFix 分支上,bugFix 可以根据 bug 的标记产生不同的分支名。

三、常用的命令

3.1 tag

http://caibaojian.com/github-create-tag.html

3.1.1 查看 tag

列出所有 tag:

1
git tag

这样列出的 tag 是按字母排序的,和创建时间没关系。如果只是想查看某些 tag 的话,可以加限定:

1
git tag -l v1.*

这样就只会列出 1.x 的版本。

3.1.2 创建 tag

创建轻量级 tag:

1
git tag v1.0

这样创建的 tag 没有附带其他信息,与之相应的是带信息的 tag:

1
git tag -a v1.0-m 'first version'

-m 后面带的就是注释信息,这样在日后查看的时候会很有用,这种是普通 tag,还有一种有签名的 tag:

1
git tag -s v1.0-m 'first version'

前提是你有 GPG 私钥,把上面的 a 换成 s 就行了。除了可以为当前的进度添加 tag ,我们还可以为以前的 commit 添加 tag:

1
2
3
4
5
-- 首先查看以前的commit
git log --oneline
-- 假如有这样一个commit:8a5cbc2 updated readme
-- 这样为他添加tag
git tag -a v1.18a5cbc2

3.1.3 删除 tag

很简单,知道 tag 名称后:

1
git tag -d v1.0

3.1.4 验证 tag

如果你有 GPG 私钥的话就可以验证 tag:

1
git tag -v v1.0

3.1.5 共享 tag

我们在执行 git push 的时候,tag 是不会上传到服务器的,比如现在的 github,创建 tag 后 git push``,在 github 网页上是看不到 tag 的,为了共享这些 tag,你必须这样:

1
git push origin --tags

3.2 push

git push 是十分常见的一个命令。

3.2.2 指定 push 的 account 和 password

Local 机同时进行着多个项目的开发工作,麻烦的是,这些项目关联的账户都不尽相同,此时,可以指定某次 push 的 account 和 password。

1
git push https://username:passwd@github.com/dotheright/mylovelycodes.git master

3.2.3 避免每次 push 要输入 account 和 password

一种方法是:
http://blog.csdn.net/stepbystepto/article/details/52772326

修改代码根目录的隐藏配置文件 .Git/config文件

1
2
3
4
5
6
7
8
[remote "origin"]
url = https://username:passwd@github.com/dotheright/mylovelycodes.git
fetch = +refs/heads/*:refs/remotes/origin/*
username 改为你的用户名
passwd 改为你的密码
中间的冒号不能省略
原理上讲其实就是 URL 的格式,里面可以带用户名密码.

四、常见问题

4.1 为什么 Github profile 没有记录你的 Contributions

https://help.github.com/articles/why-are-my-contributions-not-showing-up-on-my-profile/

  • fork 的提交不会被记录
  • master 分支上的提交不会被记录
  • commits 使用的邮箱地址不与你的账号关联

中文详细内容见 http://blog.csdn.net/u010184533/article/details/51683812