Git 规范和常用命令
Wenhao Wang 2020-07-20 Git
Git commit
规范和 Git
常用命令
# Commit message规范
Commit message包括三个部分:Header、Body和Footer
格式:
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
type[必选]:commit的类别,只允许使用下面7个标识
feat: 新功能(feature)
fix: 修补bug
docs: 文档(documentation)
style: 格式(不影响代码运行的变动)
refactor: 重构(即不是新增功能,也不是修改bug的代码变动)
test: 增加测试
chore: 构建过程或辅助工具的变动
scope[可选]:Commit影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同
subject[必选]:Commit目的的简短描述,不超过50个字符
以动词开头,使用第一人称现在时,比如change,而不是changed或changes
第一个字母小写
结尾不加句号
body[可选]:对本次Commit详细描述,可以分成多行
例:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 统计代码行数
git log --author="wangwenhao" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -
1
2
2
# 代码回滚
git reset --hard commit_id
git push -f
1
2
2
# 代码取消合并
git merge --abort
1
# 合并本地多次commit
为一个commit
# 1.查看提交日志
git log
1
# 2.确定要合并的commit
#方式1 使用HEAD版本从开始往过去数
git rebase -i HEAD~3 #合并最新三次commit
#方式2 指明要合并的版本之前的版本号
git rebase -i 版本号 #注意:此处指定的版本号不参与合并,相当于一个坐标
1
2
3
4
5
2
3
4
5
# 3.选取要合并的提交
#执行rebase命令后,会弹出一个窗口,如下:
pick 3ca6ec3 '注释**********'
pick 1b40566 '注释*********'
pick 53f244a '注释**********'
#使用vim编辑器命令 `i` 进入插入模式
#将要合并的版本号之前的 pcik 更改为 squash或者s
#使用命令`:wq` 保存并退出
#如果有冲突需要修改,要保留最新的记录,修改完之后输入一下命令
git add.
git rebase --continue
#如果想放弃本次压缩
git rebase --abort
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
第一列是rebase具体执行的操作,其中操作可以选择,其中含义如下:
选择pick操作,git会应用这个补丁,以同样的提交信息(commit message)保存提交
选择reword操作,git会应用这个补丁,但需要重新编辑提交信息
选择edit操作,git会应用这个补丁,但会因为amending而终止
选择squash操作,git会应用这个补丁,但会与之前的提交合并
选择fixup操作,git会应用这个补丁,但会丢掉提交日志
选择exec操作,git会在shell中运行这个命令
# 4.修改注释信息
#如果没有冲突或者冲突已经解决,则会出现如下vim编辑窗口,不需要的注释使用#注释掉,修改完使用:wq保存并退出,再次使用git log查看,此时已经合并成功,也可以不修改注释直接保存
# This is a combination of 4 commits.
#The first commit’s message is:
注释......
# The 2nd commit’s message is:
注释......
# The 3rd commit’s message is:
注释......
# Please enter the commit message for your changes. Lines starting # with ‘#’ will be ignored, and an empty message aborts the commit.
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
若需要将远程仓库的多次commit合并,则在以上操作之后执行以下命令,使用本地仓库代码强制覆盖远程仓库,谨慎使用,可能会覆盖远程其他人提交的代码,
git push -f