Git快速上手指北(二)


前言

工作里习惯用git命令行进行代码提交,但是用来用去一直都是只会pushpullcheckout等最基本的操作。还是有一些常用的命令操作不太记得,在此记录一下留一个备份以便日后查看。

目标

本文目标是介绍几个经典场景下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值的版本。

image-20230407213022783

方法二

有时候我们有些改动提交到了暂存区,而此时我们又想在不动暂存区的东西的前提下,对最近一次提交的commit进行修改。那么此时我们可以使用git commit --amend命令。

git commit --amend # 修改最近的一条commit

这种方法的好处是不会修改commitHEAD值,只是单纯修改commit信息。适用于我们上面所说的场景。推荐使用。

执行该条命令后我们会直接进入vim的界面,想要在vim的进行编辑我们只需要将光标移动到想要插入字符的位置然后按i进入vim的插入模式。

commit修改完成后,按ESC键退出插入模式,进入命令模式。命令模式下按:可进行命令的输入。

:q,直接退出不保持修改。

:wq,保存修改并退出。此时我们:wq保存退出即可。

image-20230407214416961

修改多条commit

如果需要修改多条commit的描述信息,那么上面的方法就不太合适了。

我们可以使用git rebase -i HEAD命令来进行修改多条commit

git rebase -i HEAD值

image-20230415120304113

再次进入到熟悉的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: 构 造 工 具的 或 者 外 部 依 赖 的 改 动 , 例 如webpacknpmpom
  • refactor: 代码重构时使用,重构(既不是新增功能,也不是修改 bug 的代码变动)
  • revert: 执行 git revert 回退类型的提交信息
  • test: 添加测试或者修改现有测试
  • perf: 性能提升改动
  • ci: 对CI 配置文件和脚本的更改
  • choreL: 不修改 src 或者 test 的其余修改,例如构建过程或辅助工具的变动
  • hotfix: 紧急修复,