blog/source/_posts/git-tips-tricks.md
2021-05-13 10:19:30 +08:00

4.1 KiB
Raw Blame History

title date tags categories keywords
Git日常使用技巧拾遗 2021-04-06 15:46:42
架构知识
代码管理
Git
架构知识
Git
代码管理,Git,技巧,amend,标准化,提交信息标准化

Git在日常使用的时候有些操作十分简单但是一旦出现失误或者没有做过的操作就会不知所措如果再盲目乱试又极有可能造成版本库损坏。这里收集了一些比较常见的Git版本库操作技巧。

修改Git的默认编辑器

修改Git的默认编辑器可以使用以下命令来实现

git config --global core.editor nano

以上命令将Git在命令行中的默认编辑器设置为了nano如果习惯使用vim可以直接将nano替换为vim。

修改提交信息

提交信息的修改分为两种情况,第一种情况是仅修改最近一次提交的信息,可以直接使用amend

git commit --amend

执行以上命令会打开一个编辑器,允许你修改最近一次提交的提交信息。

如果要修改以往的提交信息,必须要借助于rebase变基。对于修改提交信息可以利用Git提供的交互式变基来完成在使用交互式变基时必须指定要重写多久远的历史。例如修改最近6次提交的信息可以执行以下命令。

git rebase -i HEAD~6

已经启动的编辑器只要被保存了Git就会开始执行变基操作。执行这个命令以后Git就会在编辑器中列举出被选中的提交。每个提交历史的格式都是<命令> <提交编号> <提交信息>,都是要对这次提交做的操作,例如pick f7f3f6d changed files表示继续采用提交编号为f7f3f6d的提交。如果要对这次提交进行修改,可以直接编辑提交历史项目前的命令。常用的命令如下。

  • pick,采用本次提交,并且保持提交信息不变。
  • reword,采用本次提交,但修改提交信息。
  • edit采用本次提交但停下来做amend操作。编辑结束后可以使用git rebase --continue继续变基。
  • squash,采用本次提交,但将本次提交与前一次提交(上面的)合并。
  • fixup,行为与squash相同,但取消提交的日志信息。
  • exec执行一条shell命令。
  • break在当前位置暂停rebase可以使用git rebase --continue继续。
  • drop,丢弃本次提交。
  • reset将HEAD重置到指定标签。
  • merge,建立一个合并提交信息,可以使用-C来指定新的提交信息。

在对提交列表进行编辑时可以调整提交的顺序这里只需要注意Git会按照从上到下的顺序应用变基操作。

从每一个提交中删除一个文件

当因为粗心向版本库中添加了不必要的文件可以使用以下指令来将其从所有的提交中删除。

git filter-branch --tree-filter 'rm -f 要删除的文件名' HEAD

注意,这个命令是核武器级的,能够影响整个版本库,在使用时要十分谨慎。

提交信息标准化

标准化的提交信息一般包含Header、Body、Footer三个部分其中Header为提交的概要说明Body为提交的详细描述Footer中一般用于描述不兼容变更和被关闭的Issue信息。

对于提交信息标准化主要是针对Header部分。Header一般建议写为类型(影响范围):信息概要的格式。其中类别主要有以下几种。

  • feat,新增功能。
  • fix修复issue。
  • docs,仅修改文档。
  • refactor重构代码未新增任何功能也未修复任何issue。
  • build,改变构建流程,新增依赖库以及工具等。
  • style,仅仅修改了空格、缩进等代码样式,不改变代码的逻辑。
  • pref,改善性能和体现。
  • chore,对代码和测试代码以外的内容进行的修改。
  • test,修改了测试用例。
  • ci,修改了自动化流程配置。
  • revert,回滚到了上一个版本。

影响范围是可选的如果修复的issue可以书写issue的编号。对于其他的类型可以书写相应的功能代号。