# 前言

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

请我喝[茶]~( ̄▽ ̄)~*

Asuhe 微信支付

微信支付

Asuhe 支付宝

支付宝

Asuhe 贝宝

贝宝