我是一名全职开源开发者——或者,正如我喜欢称呼自己的,一个 ? 开源巫师。我已经从事开源软件工作超过十年,并构建了数百个开源软件应用程序。
我也是“不要重复自己”(DRY)哲学的忠实粉丝,并且相信编写更好的 Git 提交消息——那些上下文充分,可以作为你的开源软件的变更日志的消息——是 DRY 的一个重要组成部分。我编写的众多工作流程之一是 Emoji-Log,这是一个直接的开源 Git 提交日志标准。它通过使用 emoji 来创建更好的 Git 提交消息,从而改善开发者体验(DX)。
在构建 VSCode Tips & Tricks 仓库、我的 ? Shades of Purple VSCode 主题仓库,甚至是一个 自动变更日志 时,我都使用了 Emoji-Log,它看起来很漂亮。
Emoji-Log 的理念
我喜欢 emoji(实际上,emoji 是 emoji 的复数)。我非常喜欢它们。编程、代码、极客/书呆子、开源……所有这些本质上都很枯燥,有时甚至很无聊。Emoji 帮助我为其中添加色彩和情感。想要将情感附加到 2D、扁平、基于文本的代码世界中,这没有什么错。
与其记住 数百个 emoji,我发现最好保持类别小而通用。以下是指导使用 Emoji-Log 编写提交消息的理念
- 祈使语气
- 让你的 Git 提交消息使用祈使语气。
- 像发出命令一样编写提交消息。
- 例如,使用 ✅ 添加 而不是 ❌ 已添加
- 例如,使用 ✅ 创建 而不是 ❌ 正在创建
- 规则
- 少量类别易于记忆。
- 不多不少
- 例如,? NEW(新增),? IMPROVE(改进),? FIX(修复),? DOC(文档),? RELEASE(发布),以及 ✅ TEST(测试)
- 操作
- 根据你采取的操作进行 Git 提交。
- 使用像 VSCode 这样的优秀编辑器来提交正确的文件和提交消息。
编写提交消息
仅使用以下 Git 提交消息。简单和小巧是 Emoji-Logo 的关键。
- ? NEW(新增):祈使语气_消息
- 当你添加全新的内容时使用。
- 例如,? NEW(新增):添加 Git 忽略文件
- 当你添加全新的内容时使用。
- ? IMPROVE(改进):祈使语气_消息
- 当你改进/增强代码片段时使用,例如重构等。
- 例如,? IMPROVE(改进):远程 IP API 函数
- 当你改进/增强代码片段时使用,例如重构等。
- ? FIX(修复):祈使语气_消息
- 当你修复 bug 时使用。还需要我多说吗?
- 例如,? FIX(修复):大小写转换器
- 当你修复 bug 时使用。还需要我多说吗?
- ? DOC(文档):祈使语气_消息
- 当你添加文档时使用,例如 README.md 甚至内联文档。
- 例如,? DOC(文档):API 接口教程
- 当你添加文档时使用,例如 README.md 甚至内联文档。
- ? RELEASE(发布):祈使语气_消息
- 当你发布新版本时使用。例如,? RELEASE(发布):版本 2.0.0
- ✅ TEST(测试):祈使语气_消息
- 当你发布新版本时使用。
- 例如,✅ TEST(测试):模拟用户登录/注销
- 当你发布新版本时使用。
目前就这些。不多不少。
Emoji-Log 函数
为了快速原型设计,我制作了以下函数,你可以将它们添加到你的 .bashrc/.zshrc 文件中,以便快速使用 Emoji-Log。
#.# Better Git Logs.
### Using EMOJI-LOG (https://github.com/ahmadawais/Emoji-Log).
# Git Commit, Add all and Push — in one step.
function gcap() {
git add . && git commit -m "$*" && git push
}
# NEW.
function gnew() {
gcap "? NEW: $@"
}
# IMPROVE.
function gimp() {
gcap "? IMPROVE: $@"
}
# FIX.
function gfix() {
gcap "? FIX: $@"
}
# RELEASE.
function grlz() {
gcap "? RELEASE: $@"
}
# DOC.
function gdoc() {
gcap "? DOC: $@"
}
# TEST.
function gtst() {
gcap "✅ TEST: $@"
}
要为 fish shell 安装这些函数,请运行以下命令
function gcap; git add .; and git commit -m "$argv"; and git push; end;
function gnew; gcap "? NEW: $argv"; end
function gimp; gcap "? IMPROVE: $argv"; end;
function gfix; gcap "? FIX: $argv"; end;
function grlz; gcap "? RELEASE: $argv"; end;
function gdoc; gcap "? DOC: $argv"; end;
function gtst; gcap "✅ TEST: $argv"; end;
funcsave gcap
funcsave gnew
funcsave gimp
funcsave gfix
funcsave grlz
funcsave gdoc
funcsave gtst
如果你愿意,你可以直接将这些别名粘贴到你的 ~/.gitconfig 文件中
# Git Commit, Add all and Push — in one step.
cap = "!f() { git add .; git commit -m \"$@\"; git push; }; f"
# NEW.
new = "!f() { git cap \"? NEW: $@\"; }; f"
# IMPROVE.
imp = "!f() { git cap \"? IMPROVE: $@\"; }; f"
# FIX.
fix = "!f() { git cap \"? FIX: $@\"; }; f"
# RELEASE.
rlz = "!f() { git cap \"? RELEASE: $@\"; }; f"
# DOC.
doc = "!f() { git cap \"? DOC: $@\"; }; f"
# TEST.
tst = "!f() { git cap \"✅ TEST: $@\"; }; f"
Emoji-Log 示例
以下是使用 Emoji-Log 的仓库列表。
- Create-guten-block 工具包
- VSCode Shades of Purple 主题
- Ahmad Awais 的 GitHub 仓库(我最新的仓库)
- CaptainCore CLI(WordPress 管理工具包)
- CaptainCore GUI(WordPress 插件)
- 你呢?如果你的仓库使用了 Emoji-Log,请将 Emoji-Log 徽章 添加到你的 README 中,并向我发送一个 pull request,以便我可以将你的仓库列在仓库列表中。
12 条评论