Emoji-Log:一种编写 Git 提交消息的新方法

使用 Emoji-Log 为你的提交添加上下文。
171 位读者喜欢这篇文章。

我是一名全职开源开发者——或者,正如我喜欢称呼自己的,一个 ? 开源巫师。我已经从事开源软件工作超过十年,并构建了数百个开源软件应用程序。

我也是“不要重复自己”(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 编写提交消息的理念

  1. 祈使语气
    • 让你的 Git 提交消息使用祈使语气。
    • 像发出命令一样编写提交消息。
      • 例如,使用 ✅ 添加 而不是 ❌ 已添加
      • 例如,使用 ✅ 创建 而不是 ❌ 正在创建
  2. 规则
    • 少量类别易于记忆。
    • 不多不少
      • 例如,? NEW(新增),? IMPROVE(改进),? FIX(修复),? DOC(文档),? RELEASE(发布),以及 ✅ TEST(测试)
  3. 操作
    • 根据你采取的操作进行 Git 提交。
    • 使用像 VSCode 这样的优秀编辑器来提交正确的文件和提交消息。

编写提交消息

仅使用以下 Git 提交消息。简单和小巧是 Emoji-Logo 的关键。

  1. ? NEW(新增):祈使语气_消息
    • 当你添加全新的内容时使用。
      • 例如,? NEW(新增):添加 Git 忽略文件
  2. ? IMPROVE(改进):祈使语气_消息
    • 当你改进/增强代码片段时使用,例如重构等。
      • 例如,? IMPROVE(改进):远程 IP API 函数
  3. ? FIX(修复):祈使语气_消息
    • 当你修复 bug 时使用。还需要我多说吗?
      • 例如,? FIX(修复):大小写转换器
  4. ? DOC(文档):祈使语气_消息
    • 当你添加文档时使用,例如 README.md 甚至内联文档。
      • 例如,? DOC(文档):API 接口教程
  5. ? RELEASE(发布):祈使语气_消息
    • 当你发布新版本时使用。例如,? RELEASE(发布):版本 2.0.0
  6. ✅ 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 的仓库列表。

标签
Ahmad Awais
Langbase.com 的创始人兼 CEO — 在几秒钟内发布可组合的超个性化 Al 应用 · 前 Rapid VP DevRel Eng. · Google Developers Advisory Board (gDAB) 创始成员。🧑‍💻 AI/ML/DevTools 天使投资人 ❯ AI/ML Advisory Board member San Francisco, DevNetwork

12 条评论

真可悲,如今简洁明了的消息对人们来说已经不够了,他们觉得有必要用愚蠢的小图片来装饰一切。

Emoji 日志是简单明了的。它实际上是我们所说的 #M11Y 基于媒体的可访问性。例如,就像如果通知后面有一个 ✅ 标记,你就会立刻知道这是一个“OK 通知”,并且发生了好事。而当后面有 ❌ 时。这是一个“出了问题”的通知——甚至在你阅读发生了什么之前。

回复 fredd (未验证) 的评论:So sad that simple and

对我来说,这是不必要的累赘。就我而言,一个简单的“OK”或“NOT OK”就足够了。

我认为人们对视觉线索的依赖,以及为了传达信息而荒谬地过度使用 gif、表情包等,有助于书面文字的退化,从而污染互联网。

我也认为这些东西有助于人们更容易跳过细节。他们看到勾或叉,然后只是浏览一下具体内容。

也许只是我这个老古板,但我喜欢阅读文字。

回复 mrahmadawais 的评论:Emoji log is simple and

感谢你的诚实。我也更喜欢更少的 UI。但 Emoji 让这个 2D 世界更有趣一点。

回复 fredd (未验证) 的评论:To me it is unneeded fluff. A

我在“理念”标题下写了关于它的内容!请仔细阅读。“与其记住数百个 emoji,我发现最好保持类别小而通用。”你和你的团队真的能记住 GitMoji 中的数百个 emoji 消息吗?

回复 eyarz (未验证) 的评论:what's the benefit of using

我喜欢用符号丰富提交消息的想法——但 emoji 似乎做得过火了。

一个问题是它们很少能很好地匹配其预期含义。你使用的“fix”emoji 主要意味着动物,并与野生动物相关联。那么这与修复事物有什么关系呢?

另一个问题是 emoji 没有普遍的含义。以竖起大拇指为例——在美国,它是赞许的标志,在希腊,它是一种侮辱。

在提交消息中使用一些视觉线索是个好主意,但你最好使用更简单、更抽象的符号。看看 JIRA 就是一个很好的例子。

你说得对,我应该更好地解释 emoji。谢谢你。

? Emoji 含义:一个“包裹 emoji”——可以包含新的东西。
? Emoji 含义:一个“OK 手势 emoji”——旨在赞赏改进。
? Emoji 含义:一个“bug emoji”——意味着有一个 bug 被修复了。
? Emoji 含义:一个“书本 emoji”——意味着文档或笔记,就像书本一样。
? Emoji 含义:一个“火箭 emoji”——旨在显示新的发布/启动。
✅ Emoji 含义:一个“勾选 emoji”——表示某些测试已成功运行。

回复 Zort (未验证) 的评论:I like the idea of enriching

谢谢你的建议。
在你的 .gitconfig/aliases 示例中,我确实遇到了一个问题。我不得不更改
cap = "!f() { git add .; git commit -m \"$@\"; git push; }; f"

cap = "!f() { git add .; git commit -m \"$*\"; git push; }; f"

这使得它与你的 bash/zsh 函数相匹配。

查看这篇文章,我在 Chrome 中看不到你的任何示例 emoji。切换到 Mozilla 后我可以看到它们。这是使用图像而不是文本的风险之一,emoji 并非在所有平台上都得到普遍支持。

© . All rights reserved.