# 前言
工作里习惯用 git
命令行进行代码提交,但是用来用去一直都是只会 push
、 pull
、 checkout
等最基本的操作。还是有一些常用的命令操作不太记得,在此记录一下留一个备份以便日后查看。
# 目标
本文目标是介绍几个经典场景下 git
命令行的运用,通过本文的你将可以学会如下操作:
- 修改历史
commit
的描述信息 - 合并多个
commit
- 对分支进行重命名
- 推荐的
commit
规范
# 修改历史 commit
# 修改最近一次的 commit
# 方法一
有时我们想对刚刚提交的 commit
信息进行修改,那么此时我们可以将版本退回到上一次 commit
的状态,然后再重新提交一次 commit
。
先使用 git log
命令查看 commit
记录,复制想要回退版本的 HEAD值
。在进行 git reset HEAD值
就可以进行版本的回退。回退以后重新 commit
就 OK 啦。
git log # 查看 commit 记录 | |
git reset HEAD值 # 回退版本 |
需要注意的是 git reset
命令是取开区间的。什么意思呢,就是 git
会把状态回退到你所取的 HEAD值
的那个版本,在该 HEAD值
以后的 commit
都会被回退,但并不包括该 HEAD值
的版本。
# 方法二
有时候我们有些改动提交到了暂存区,而此时我们又想在不动暂存区的东西的前提下,对最近一次提交的 commit 进行修改。那么此时我们可以使用 git commit --amend
命令。
git commit --amend # 修改最近的一条 commit |
这种方法的好处是不会修改 commit
的 HEAD值
,只是单纯修改 commit
信息。适用于我们上面所说的场景。推荐使用。
执行该条命令后我们会直接进入 vim
的界面,想要在 vim
的进行编辑我们只需要将光标移动到想要插入字符的位置然后按 i
进入 vim
的插入模式。
commit
修改完成后,按 ESC键
退出插入模式,进入命令模式。命令模式下按 :
可进行命令的输入。
:q
,直接退出不保持修改。
:wq
,保存修改并退出。此时我们 :wq
保存退出即可。
# 修改多条 commit
如果需要修改多条 commit
的描述信息,那么上面的方法就不太合适了。
我们可以使用 git rebase -i HEAD
命令来进行修改多条 commit
。
git rebase -i HEAD值 |
再次进入到熟悉的 vim
操作界面,根据提示我们可以将需要修改的 commit
前面的 pick
改成 reword
或者 r
即可完成 commit
的修改。
git rebase -i
不止可以这样使用。它还有几种修改选择:
- pick:保留该 commit
- reword:保留该 commit,但我需要修改该 commit 的 Message
- edit:保留该 commit, 但我要停下来修改该提交 (包括修改文件)
- squash:将该 commit 和前一个 commit 合并
- fixup:将该 commit 和前一个 commit 合并,但我不要保留该提交的注释信息
- exec:执行 shell 命令
- drop:丢弃这个 commit
# 重命名 git
分支
有时我们想要重命名我们所在的分支,为了实现这个需求,下面我将介绍两种方法来重命名分支。
# 方法一
切换到我们需要重命名的分支上,然后使用 -m
参数重命名分支
git branch -m new-branch-name |
# 方法二
在任意分支上,直接使用 -m
参数重命名分支
git branch -m old-branch-name new-branch-name |
# 推荐的 commit
规范
参考比较流行的 AngularJS
的规范,这里我推荐一些 commit
信息的填写规范。
- feat: 新增页面或功能
- fix: bug 修复
- docs: 只改动了文档相关的内容
- style: 不影响代码含义的改动,例如去掉空格、改变缩进、增删分号
- build: 构 造 工 具的 或 者 外 部 依 赖 的 改 动 , 例 如
webpack
,npm
,pom
- refactor: 代码重构时使用,重构(既不是新增功能,也不是修改 bug 的代码变动)
- revert: 执行
git revert
回退类型的提交信息 - test: 添加测试或者修改现有测试
- perf: 性能提升改动
- ci: 对 CI 配置文件和脚本的更改
- choreL: 不修改
src
或者test
的其余修改,例如构建过程或辅助工具的变动 - hotfix: 紧急修复,