前言
工作里习惯用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: 紧急修复,