开源仓库 Commit 规范 | 让 Commit Message 更可爱

让 git commit message 更加可爱。

Refrence:

前言:

说在所有之前,如果你在参与团队开发,那么规范应该以团队要求为主,这里主要是日常自己的仓库维护。

之前我大概学了一下基本的 commit message,比如 refactor,fix,feat,feature,perf 等等。

但是这些写起来让人感觉没什么动力,通常想不到写什么的时候我就直接 update,update 了。结果搞得仓库就很难看,git log 也很糟糕。

Git Commit Message 虽然可以随意描述,但使用没有意义的描述对于后续 review 代码以及理解代码用途等方面都会造成巨大的影响。因此 Commit Message 具有意义是最基本的要求,此外,你还应该遵守一定的格式规范,这样能够让大家更快更清晰地了解该 Commit 的详情。这里我主要介绍下常规的 Git Commit 规范和 Gitmoji 规范,最后介绍下我常用的相关配置。

不管你先前有没有学过,都不妨试试用这个 commit message 规范来作为你仓库规范,至少它写起来要让人觉得更加可爱些。

成品展示:https://github.com/yutto-dev/bilili

而我丑到爆炸的仓库是这样的:https://github.com/MrXnneHang/Blog

怎么做:

修改上一次 commit 的信息:


git commit --amend

这会打开你上一次的 commit message,你可以修改它,我以前 commit 错了总是reset --hard然后重新 add,然后再次 commit,而且,当碰到文件修改的,还要备份一下文件,有点悲催哈,但我这么做了半年。

像这样:


:memo: docs:copilot无法在vscode中工作 (这是commit -m 的内容,:memo:是Gitmoji,push后会自动渲染)

# 请为您的变更输入提交说明。以 '#' 开始的行将被忽略,而一个空的提交

# 说明将会终止提交。

# ...

你可以选择在这里修改你的 commit message,然后保存退出。当然你也可以直接在 commit -m 的时候一次性写完。

ps:你可以像写markdown一样写commit信息:开源仓库 Commit 规范 | 让 Commit Message 更可爱 - #9,来自 eggacheb

依次分别是header,body,footer。header应该尽量写得简短一些,有事情往body里面塞。

自定义短语:

这个大大减少了我记忆和输入 Gitmoji 的时间。

比如我可以用ref来替代:recycle: refactor:

一般操作系统默认输入法就支持自定义短语,你可以仔细找找。

不过上次 deepin 的搜狗输入法就会乱码,所以非必要,还是把短语加到默认输入法里,然后导出备份一份。

包括上面那个git commit --amend我也放到自定义短语里了。

Gitmoji 和 Git Message 对照表:

可能会有所出入。

因为实际上使用了 Gitmoji 就可以不用使用 Git Message 了,但是防止别人看不懂,还是加上的好。

常用的就这些:


🎉 init: 初始化

🚀 release: 发布新版本

🎨 style: 代码风格修改(不影响代码运行的变动)

✨ feat: 添加新功能

🐛 fix: 修复 bug

📝 docs: 对文档进行修改

♻️ refactor: 代码重构(既不是新增功能,也不是修改 bug 的代码变动)

⚡ perf: 提高性能的代码修改

🧑‍💻 dx: 优化开发体验

🔨 workflow: 工作流变动

🏷️ types: 类型声明修改

🚧 wip: 工作正在进行中

✅ test: 测试用例添加及修改

🔨 build: 影响构建系统或外部依赖关系的更改

👷 ci: 更改 CI 配置文件和脚本

❓ chore: 其它不涉及源码以及测试的修改

⬆️ deps: 依赖项修改

🔖 release: 发布新版本

你把这些全部发给 gpt,它就会把它的代码给你,比如这个我肯定常用的::poop: :poop: bad code:

💩:poop:是等效的,只要你写在 commit 里后 push 到仓库里就会自动渲染。

比较完整的可以查看:https://nyakku.moe/posts/2018/09/16/git-commit-message-convention.html

你一条一条地把这些加到你的自定义短语里,然后就可以愉快地写 commit message 了。

希望你以后的仓库都很可爱。

135 个赞

季度泥得菜花:bili_057:

8 个赞

感谢佬友分享!

3 个赞

感谢你的分享 。

4 个赞

感谢分享!学到了

6 个赞

你会爱上我们的 commit 的 :smiling_face_with_three_hearts:

9 个赞

非常漂亮!!

搓了一下,结合上次佬友提供的 prompt ({$DIFF}是插件会输入的变数,依需求自行修改)

你的任务是产生一个遵循 Conventional Commits 规范的 git commit message,使用中文的流畅语言和 emoji。 Conventional Commits 规范是一种轻量级的 commit message 约定,用于创建明确的提交历史记录。

以下是要提交的变更的 git diff:

<diff>
{$DIFF}
</diff>

仔细分析 diff 以理解所做的更改。请注意:
- 被修改、新增或删除的文件
- 更改的性质(例如:错误修复、新功能、重构等)
- 任何破坏性更改

根据你的分析,请按照以下步骤产生 commit message:

1. 确定适当的提交类型。常见类型包括:
- 🎉 init: 初始化
- 🚀 release: 发布新版本
- 🎨 style: 代码风格修改(不影响代码运行的变动)
- ✨ feat: 添加新功能
- 🐛 fix: 修复 bug
- 📝 docs: 对文档进行修改
- ♻️ refactor: 代码重构(既不是新增功能,也不是修改 bug 的代码变动)
- ⚡ perf: 提高性能的代码修改
- 🧑‍💻 dx: 优化开发体验
- 🔨 workflow: 工作流变动
- 🏷️ types: 类型声明修改
- 🚧 wip: 工作正在进行中
- ✅ test: 测试用例添加及修改
- 🔨 build: 影响构建系统或外部依赖关系的更改
- 👷 ci: 更改 CI 配置文件和脚本
- ❓ chore: 其它不涉及源码以及测试的修改
- ⬆️ deps: 依赖项修改
- 🔖 release: 发布新版本

2. 如果提交引入了破坏性更改,在类型/范围后面加上感叹号。

3. 在主题行中提供一个简短的、祈使语气的更改描述。

4. 如果需要,在提交正文中添加更详细的更改说明,解释更改的动机并与先前的行为进行对比。

5. 如果有破坏性更改,请在提交正文的末尾描述它们,以"破坏性更改:"开头。

按以下格式输出你的回应:

<commit_message>
[emoji][类型][可选范围]: [描述]

[可选正文]

[可选页脚]
</commit_message>

确保 commit message 遵守以下规则:
- 主题行不应超过 50 个字符
- 正文应在 72 个字元处换行
- 在主题行中使用祈使句和现在式
- 主题行结尾不要加句号
- 用空白行将主题与正文分开
- 使用正文解释做了什么和为什么,而不是如何做

记住,一个好的 commit message 应该能够完成以下句子:"如果应用,这个提交将 [你的主题行]"。

请确保使用中文的流畅语言编写 commit message,并在适当的地方加入 emoji 以增强可读性和表达力。
7 个赞

很适合在cursor里用!

3 个赞

确实,忘记在上面补充了。

commit内容也是分成header,body,footer来写的。

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

我以前不知道,经常把header写得巨长。

github总是每隔一段时间就让我感觉又认识了它一遍。

3 个赞

感谢分享大佬厉害啊

2 个赞

谢谢你,你也很可爱

2 个赞

感谢你的分享,学到了,之前基本只用下面这些

  • feat
  • fix
  • refactor
  • chore
  • version

以后可以更细分一些了

1 个赞

这个怎么理解? 以为是ci,结果下面有ci。

1 个赞

我基本只写“.”,“…”,“fix”,“doc”,“some”,“many” :grinning:

2 个赞

推荐vscode插件,在jb上还没找到好的替代的工具

8 个赞

感谢大佬分享

4 个赞

涨姿势,学习一下

2 个赞

使用这个可以用 api 直接生成 commit 消息

7 个赞

学到了,我的个人commit 也是看不下去,现在回头看看都不知道自己之前干了啥

3 个赞