自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Git Commit Message 應(yīng)該怎么寫?

開發(fā) 前端
scope 用于說明 commit 的影響范圍,比如數(shù)據(jù)層、控制層、視圖層等等,視項(xiàng)目不同而不同。如果你的修改影響了不止一個(gè) scope,就可以使用 * 代替。

最近被同事吐槽了,說我代碼提交說明寫的太差。其實(shí)都不用他吐槽,我自己心里也非常清楚。畢竟很多時(shí)候犯懶,都是直接一個(gè) -m "fix" 就提交上去了。

這樣做是非常不好的,我也是自食惡果,深受其害。特別是查看歷史提交記錄時(shí),想通過提交說明來了解當(dāng)時(shí)的功能變更,基本不可能,都得點(diǎn)進(jìn)去看代碼才行。

所以這兩天看了一些如何寫好提交說明的資料,系統(tǒng)地學(xué)習(xí)了一下。雖然團(tuán)隊(duì)沒有這方面的要求,但是想要進(jìn)步,得對自己提更高的要求才行。

一般使用 git 提交代碼的話,可以使用 -m 參數(shù)來指定提交說明,比如:

$ git commit -m "hello world"

如果一行不夠,可以只執(zhí)行 git commit,這樣就會(huì)跳出文本編輯器來寫多行:

$ git commit

Commit Message 格式

Commit Message 包括三個(gè)部分:Header,Body 和 Footer。

<Header>

<Body>

<Footer>

其中,Header 是必需的,Body 和 Footer 可以省略。

Header

Header 部分只有一行,包括三個(gè)字段:type(必需)、scope(可選)、subject(必需)。

<type>(<scope>): <subject>

type

type 用于說明 commit 的類別,具體的標(biāo)識(shí)如下:

  • feat:一個(gè)新的功能(feature);
  • fix:修復(fù) bug;
  • docs:修改文檔,比如 README.md、CHANGELOG.md 等;
  • style:修改代碼的格式,不影響代碼運(yùn)行的變動(dòng),比如空格、格式化代碼、補(bǔ)齊句末分號(hào)等等;
  • refactor:代碼重構(gòu),沒有新功能的添加以及 bug 修復(fù)的代碼改動(dòng);
  • perf:優(yōu)化代碼以提高性能;
  • test:增加測試或優(yōu)化改善現(xiàn)有的測試;
  • build:修改影響項(xiàng)目構(gòu)建文件或外部依賴項(xiàng),比如 npm、gulp、webpack、broccoli 等;
  • ci:修改 CI 配置文件和腳本;
  • chore:其他非 src 路徑文件和測試文件的修改,比如 .gitignore、.editorconfig 等;
  • revert:代碼回退;

scope

scope 用于說明 commit 的影響范圍,比如數(shù)據(jù)層、控制層、視圖層等等,視項(xiàng)目不同而不同。

如果你的修改影響了不止一個(gè) scope,就可以使用 * 代替。

subject

subject 是 commit 目的的簡單描述,不超過 50 個(gè)字符,結(jié)尾不需要句號(hào)。

Body

Body 部分是對本次 commit 的詳細(xì)描述,可以分多行。

Body 部分應(yīng)該說明代碼變動(dòng)的動(dòng)機(jī),以及與以前行為的對比。

More detailed explanatory text, if necessary.  Wrap it to
about 72 characters or so.

Further paragraphs come after blank lines.

- Bullet points are okay, too
- Use a hanging indent

Footer

Footer 部分主要用于兩種情況:不兼容變動(dòng)和處理 Issue。

不兼容變動(dòng)

如果當(dāng)前代碼與上一個(gè)版本不兼容,則 Footer 部分以 BREAKING CHANGE: 開頭,后面就是對變動(dòng)的描述、以及變動(dòng)理由和遷移方法。

BREAKING CHANGE: Previously, $compileProvider.preAssignBindingsEnabled was set to true by default. This means bindings were pre-assigned in component constructors. In Angular 1.5+ the place to put the initialization logic relying on bindings being present is the controller $onInit method.

To migrate follow the example below:

Before:

```js
angular.module('myApp', [])
.component('myComponent', {
bindings: {value: '<'},
controller: function() {
this.doubleValue = this.value * 2;
}
});
```

After:
```js
angular.module('myApp', [])
.component('myComponent', {
bindings: {value: '<'},
controller: function() {
this.$onInit = function() {
this.doubleValue = this.value * 2;
};
};
this.doubleValue = this.value * 2;
}
});
```

Don't do this if you're writing a library, though, as you shouldn't change global configuration then.

處理 Issue

處理 Issue 分為兩種情況,分別是關(guān)聯(lián) Issue 和關(guān)閉 Issue。

比如本次提交如果和某個(gè) issue 有關(guān)系:

Issue #1, #2, #3

如果當(dāng)前提交信息解決了某個(gè) issue:

Close #1, #2, #3

Revert

還有一種特殊情況,如果當(dāng)前 commit 用于撤銷以前的 commit,則必須以 revert: 開頭,后面跟著被撤銷 commit 的 Header。

revert: feat(pencil): add 'graphiteWidth' option

This reverts commit 667ecc1654a317a13331b17617d973392f415f02.

Body 部分的格式是固定的,必須寫成 This reverts commit &lt;hash>.,其中 hash 是被撤銷 commit 的 SHA 標(biāo)識(shí)符。

如果當(dāng)前 commit 與被撤銷的 commit,在同一個(gè)發(fā)布(release)里面,那么它們都不會(huì)出現(xiàn)在 Change log 里面。如果兩者在不同的發(fā)布,那么當(dāng)前 commit,會(huì)出現(xiàn)在 Change log 的 Reverts 小標(biāo)題下面。

最后來看一個(gè)例子,算是一個(gè)總結(jié),至于具體內(nèi)容還是要根據(jù)實(shí)際情況來填寫。

feat: 添加了分享功能

給每篇博文添加了分享功能

- 添加分享到微博功能
- 添加分享到微信功能
- 添加分享到朋友圈功能

Issue #1, #2
Close #1

插件推薦

有了這些規(guī)范,也知道怎么寫了,但是不是會(huì)擔(dān)心記不住呢?不要怕,有插件可以用,如果使用 VsCode 的話,可以安裝一個(gè)叫 Commit Message Editor 的插件。

可以根據(jù)提示信息直接寫:

圖片

也可以使用表單的方式,有選項(xiàng)可以選擇:

圖片

這樣不僅可以很方便地寫提交說明了,還可以使提交說明更加的規(guī)范。

以上就是本文的全部內(nèi)容,如果覺得還不錯(cuò)的話歡迎點(diǎn)贊,轉(zhuǎn)發(fā)和關(guān)注,感謝支持。

參考文章:

  • https://juejin.cn/post/6960541430473293837
  • https://mrseawave.github.io/blogs/articles/2021/03/31/git-commit-message/
責(zé)任編輯:武曉燕 來源: AlwaysBeta
相關(guān)推薦

2023-07-16 23:09:55

GitType代碼

2024-08-07 10:24:04

2020-08-14 08:00:39

Git數(shù)據(jù)層控制層

2020-05-12 14:57:06

git commit代碼前端

2020-09-17 14:20:24

數(shù)據(jù)科學(xué)簡歷崗位

2020-06-23 14:28:24

MySQL商品數(shù)據(jù)

2012-02-24 09:34:48

SVNGit

2015-10-26 09:19:28

PHP經(jīng)驗(yàn)

2020-09-11 10:24:04

設(shè)計(jì)移動(dòng)端交互輸出文檔

2019-03-28 14:30:21

代碼開發(fā)命令

2021-03-04 09:11:57

日志開發(fā)打印

2021-01-22 05:55:12

GitAngularJStype

2012-08-27 15:25:41

移動(dòng)App移動(dòng)應(yīng)用App

2020-07-14 08:16:13

代碼互聯(lián)網(wǎng) PC

2011-08-24 10:39:21

COMMIT中文man

2021-09-30 07:57:14

linuxGit

2016-09-21 10:18:26

阿里Dubbo性能測試

2020-10-23 09:38:41

數(shù)據(jù)分庫分表數(shù)據(jù)遷移

2021-03-26 09:11:23

技術(shù)研發(fā)工程師

2023-01-28 08:04:08

AOPSpring框架
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)