[Git] 代码管理之 Git(五)优雅地提交一次Commit

前面的几篇博客都已经讲了commit的基本用法了,现在我们简单地回顾下commit的用法。

Commit简单用法

当我们在本地工作区修改完代码,然后将本地修改了的文件通过add命令添加到暂存区,假如本地修改了encodeApp.c这个文件,则使用下面的命令。

git add encodeApp.c

然后我们就可以将暂存区的内容通过commit命令提交到本地仓库了。

git commit encodeApp.c -m "encodeApp function added"

我们简单的个人项目或者是小团队的项目基本上就是这么一句话就简单的提交了。而且我们如果在提交代码的时候,只输入了 git commit 而忘记输入了 -m 参数的话,那么此时会进入一个 vim 编辑界面,如下图:

git commit
这是一个vim文件的图,但是里面的内容全部被注释掉了,内容是关于你当前工作区域的所有修改以及所有的修改的文件是否被git跟踪的信息。这里可以根据它的相关提示来书写本次提交的附加信息。

这些注释信息是不会被提交的,所以如果不写任何内容,直接退出这个文件的话,那么本次提交将会被取消(Abort)

修改完成后,就可以像使用vim一样,直接 :wq 退出即可,这时,git会自动完成这次commit。

我们在工作中经常会有这样的情况,针对一个问题,我们修改了好几次,或者是修改一个bug修改了好几天,所以针对同一个问题会有好几次提交,如果我们把这连续几次的修改一次一次地提交,会显得commit内容比较冗杂,这时我们想把后续的几次提交全部追加到一个commit内容里的话,我们可以使用 --amend 命令。

git commit --amend

当我们使用这条命令时,git会打开上次提交的commit信息,就好像上图一样,然后我们对打开的commit信息做适当修改或追加后,重新保存退出后,该次和上次的修改commit就合并为了一条commit信息。

优雅的Commit

但是我们在企业大型项目开发的时候,我们的commit信息就不能这么简单了,我们可能需要在commit信息里添加更加详细的描述,对于想规范化开发的团队来说,我推荐 Angular团队的规范。在AngularJS的Github上,有个开发者文档,就专门讲了他们团队怎么写commit提交信息的。

网址:https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines

在这里的 Git Commit Guidelines 部分,讲了他们commit的规范,简单地说,他们遵顼一个模板

<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

上诉模板中,一共分为三个部分,分为为头部,即 <type>(<scope>):<subject> 部分,然后是body部分,最后是footer部分。

头部包含本次提交地类型,范围以及主题内容,type包含如下几种类型

  • feat: A new feature
  • fix: A bug fix
  • docs: Documentation only changes
  • style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
  • refactor: A code change that neither fixes a bug nor adds a feature
  • perf: A code change that improves performance
  • test: Adding missing or correcting existing tests
  • chore: Changes to the build process or auxiliary tools and libraries such as documentation generation

然后scope的话包括 $location, $browser, $compile, $rootScope, 例如ngHref, ngClick, ngView, 等关于范围的修改。
头部部分的最后的subject就是简要地描述下本次的修改,比如“deblocking部分完成8x8块的实现”等。

头部简要地介绍了这次提交的概括,主体部分(Body)描述为什么修改, 做了什么样的修改, 以及开发的思路等等,这个就靠个人发挥了,尽量写得易懂和思路清晰。

最后脚注部分(Footer)放 Breaking Changes 或 Closed Issues或者是本次提交人的信息等,方便以后做系统信息追踪的时候能最快找到当事人。

使用git cmmit模板来规范提交

上面说了commit优雅提交的方法,但是对于我们每次提交不可能都这么一个一个地去敲,最好是有一个模板给我们,然后我们每次只需要去修改里面的内容即可,那么这就需要用到git commit的模板了。

按照下面的几个步骤,我们可以让我们的commit信息自带模板。首先,我们打开~/.gitconfig文件(Linux环境下),如果是Windows环境下则默认是用户目录下,一般配置了用户名和邮件的,这个文件会自动生成。在这个文件中添加以下内容

[commit]
              template=~/.gitmessage

然后在此处指定的目录下创建.gitmessage文件(注意文件名的第一个字符是个点),例如,我们可以创建这样的模板

# head: <type>(<scope>): <subject>
# - type: feat, fix, docs, style, refactor, test, chore
# - scope: can be empty (eg. if the change is a global or difficult to assign to a single component)
# - subject: start with verb (such as 'change'), 50-character line
#
# body: 72-character wrapped. This should answer:
# * Why was this change necessary?
# * How does it address the problem?
# * Are there any side effects?
#
# footer: 
# - Include a link to the ticket, if any.
# - BREAKING CHANGE
#

这样,我们到时候看到的commit文件就会在文件头部加上我们的模板内容,我们就可以轻松得格式化commit提交信息啦。

猜你喜欢

转载自blog.csdn.net/starperfection/article/details/110698444