Git提交commit规范

日志规范

1
2
3
4
5
6
<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

每次提交,Commit message 都包括三个部分:Header,Body 和 Footer。

其中,Header 是必需的,Body 和 Footer 可以省略。

Header

Header部分只有一行,包括三个字段:type(必需)、scope(可选)和subject(必需)。

type

type用于说明 commit 的类别,只允许使用下面7个标识。

1
2
3
4
5
6
7
feat:新功能(feature)
fix:修补bug
docs:文档(documentation)
style: 格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
test:增加测试
chore:构建过程或辅助工具的变动

如果type为feat和fix,则该 commit 将肯定出现在 Change log 之中。其他情况(docs、chore、style、refactor、test)由你决定,要不要放入 Change log,建议是不要。

master主分支打Tag

创建标签

git tag -a tag1 -m “我是tag1描述”

推送标签

git push origin tag1

删除本地标签

git tag -d tag1

删除远程标签

git push origin :refs/tags/tag1

合并commit提交记录

如果我们想合并远程仓库提交记录, 则

  1. 首先查看当前的日志记录, 假设下边的是我们的提交记录, 我们要将这5条合并为1条记录。

git log

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
commit 475bd3f60cb8fd3b92370744014e45eb11ee7e61 (HEAD -> ai6, origin/ai6)
Author: cuishiying <idea360@foxmail.com>
Date: Wed Feb 3 13:56:45 2021 +0800

feat: 模板和模块添加颜色

commit a2bc0f34ff0a0d9cc1139b2929a18c081dd357f6
Author: cuishiying <idea360@foxmail.com>
Date: Thu Jan 28 18:44:00 2021 +0800

refactor: 基本数据类型改包装数据类型

commit 5bba947340d452e98669f7b6648e3118314c3384
Author: cuishiying <idea360@foxmail.com>
Date: Thu Jan 28 18:43:23 2021 +0800

refactor: 基本数据类型改包装数据类型

commit 4bbd4ae9203697dba5da40ff27d43b313491b15a
Author: cuishiying <idea360@foxmail.com>
Date: Thu Jan 28 18:02:00 2021 +0800

refactor: 基本数据类型改包装数据类型

commit 4b19e6f5dfafdf9bba4469eb0304984fafdb1516
Author: cuishiying <idea360@foxmail.com>
Date: Thu Jan 28 17:58:18 2021 +0800

refactor: 基本数据类型改包装数据类型
  1. git rebase -i HEAD~5
1
2
3
4
5
6
7
pick 4b19e6f refactor: 基本数据类型改包装数据类型
pick 4bbd4ae refactor: 基本数据类型改包装数据类型
pick 5bba947 refactor: 基本数据类型改包装数据类型
pick a2bc0f3 refactor: 基本数据类型改包装数据类型
pick 475bd3f feat: 模板和模块添加颜色

# Rebase 2f248c1..475bd3f onto a2bc0f3 (5 commands)

修改第2~6行的第一个单词 pick 为 squash or s, 然后保存退出

  • pick 的意识是要执行这个 commit
  • squash 的意识是这个 commit 会被合并到前一个 commit

修改结果为

1
2
3
4
5
6
7
pick 4b19e6f refactor: 基本数据类型改包装数据类型
squash 4bbd4ae refactor: 基本数据类型改包装数据类型
squash 5bba947 refactor: 基本数据类型改包装数据类型
squash a2bc0f3 refactor: 基本数据类型改包装数据类型
squash 475bd3f feat: 模板和模块添加颜色

# Rebase 2f248c1..475bd3f onto a2bc0f3 (5 commands)
  1. 接着会弹出合并后新的提交记录,修改为我们想提交的commit
1
2
3
4
# This is a combination of 5 commits.
# This is the 1st commit message:

refactor: 1. 基本数据类型保卫包装数据类型;2. 模板和模块添加颜色属性
  1. 同步到远程仓库

git push -f

暂存本地修改

1
git stash -help

merge和rebase

rebase使用场景:

首先我们从dev分支拉取了记录。假设我们在dev-aaa分支修改了记录, 其他人修改了dev-bbb并合并到了dev分支, 那么dev和dev-aaa这两个分支各自"前进"了。

此时如果merge操作则会在合并代码后有1条merge记录。

如果rebase则会将dev-aaa的提交追加到dev-bbb的提交之后。(dev-aaa的代码进行了commit, 尚未push)

1
2
3
4
1. git rebase dev
2. 解决冲突并 git add .
3. git rebase --continue 完成本地仓库的rebase合并
4. git push推送到远端仓库

查看分支树

1
git log --oneline --graph --decorate --all

删除分支

1
2
3
4
5
// delete branch locally
git branch -d localBranchName

// delete branch remotely
git push origin --delete remoteBranchName

最后

本文到此结束,感谢阅读。如果您觉得不错,请关注公众号【当我遇上你】,您的支持是我写作的最大动力。

参考