1 提交准则

1.1 git diff –check

检查是否有空行,行尾空格

1.2 提交信息

一般情况下,信息应当以少于 50 个字符(25个汉字)的单行开始且简要地描述变更,接着是一个空白行,再接着是一个 更详细的解释。

Git 项目要求一个更详细的解释,包括做改动的动机和它的实现与之前行为的对比 - 这是一个值 得遵循的好规则。

修改的摘要(50 个字符或更少)

如果必要的话,加入更详细的解释文字。在 大概 72 个字符的时候换行。在某些情形下, 第一行被当作一封电子邮件的标题,剩下的 文本作为正文。分隔摘要与正文的空行是 必须的(除非你完全省略正文);如果你将 两者混在一起,那么类似变基等工具无法 正常工作。

空行接着更进一步的段落。

  • 句号也是可以的。
  • 项目符号可以使用典型的连字符或星号 前面一个空格,之间用空行隔开, 但是可以依据不同的惯例有所不同。

2 小型团队工作流

small-team-flow.png

3 私有管理团队

managed-team-flow.png

4 派生的公开项目

4.1 克隆仓库

$ git clone (url) 
$ cd project 
$ git checkout -b featureA # (work) 
$ git commit # (work) 
$ git commit

4.2 创建自己可写的仓库并发送拉取请求

在原始项目中点击 fork 当工作已经被推送到你的派生后,你需要通知维护者。这通常被称作一个拉取请求(pull request)。

git request-pull origin/master myfork

git remote add myfork (url)
git push -u myfork featureA

4.2.1 小例子

维护者看到了你的第二个分支上的工作并且很喜欢其中的概念,但是想要你修改 一下实现的细节。 你也可以利用这次机会将工作基于项目现在的 master 分支。 你从现在的 origin/master 分支开始一个新分支,在那儿压缩 featureB 的改动,解决任何冲突,改变实现,然后推送它为一个新分支。

$ git checkout -b featureBv2 origin/master 
// --no-commit 选项在默认合并过程中可以用来延迟 生成合并提交。
// --squash 选项接受被合并的分支上的所有工作,并将其压缩至一个变更集,使仓库变成一个真正的合并发生的 状态,而不会真的生成一个合并提交。
$ git merge --no-commit --squash featureB  
# (change implementation) 
$ git commit 
$ git push myfork featureBv2

5 TODO 通过邮件的公开项目

6 维护一个 git 项目

6.1 在特性分支中工作

  1. 为特性分支起一个容易记的名字

6.2 应用来自邮件的补丁

  1. git apply /tmp/patch-ruby-client.patch
    • git apply 命令采用了一种“全部应用,否则就全部撤销(apply all or abort all)”的模型
    • git apply –check 0001-seeing-if-this-helps-the-gem.patch // 使用 –check 检查是否可用
  2. git am
    • 要应用一个由 format-patch 命令生成的补丁,你应该使用 git am 命令
    • git am 0001-limit-log-function.patch // 补丁被顺利地应用并且自动创建一个提交
    • git am –resolved // 解决冲突并且使用 –resolved 标记为解决

6.3 检出远程分支

  1. 这种方式你可以同时得到提交历史
$ git remote add jessica git://github.com/jessica/myproject.git 
$ git fetch jessica 
$ git checkout -b rubyclient jessica/ruby-client

6.3.1 确定引入了哪些东西

git log contrib --not master
git diff master...contrib // 自当前分支与 master 分支的共同祖先起,分支更改了哪些内容

6.3.2 合并工作流

  • master 稳定分支
  • develop 开发分支
  • 打标签发布之后会快进到 develop 分支

6.3.3 变基与拣选工作流

  • 将特性分支变基到 master 如果理想的话,可以得到一个线性的提交历史
  • 拣选:git cherry-pick e43a6fd3e94888d76779ad79fb568ed180e5fcdf // 将特性分支中特定的提交合并到 master 中

6.3.4 为发布打标签

  • git tag -s v1.5 -m 'my signed 1.5 tag'
  • pgp 公钥问题
    1. gpg –list-keys
Last Updated 2017-04-03 一 00:33.
Render by hexo-renderer-org with Emacs 25.1.1 (Org mode 9.0.2)