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 提交信息使用祈使语气。
    • 像下命令一样编写提交信息。
      • 例如,使用 ✅ Add 而不是 ❌ Added
      • 例如,使用 ✅ Create 而不是 ❌ Creating
  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 — 秒级交付可组合的超个性化 AI 应用 · 前 Rapid 公司 DevRel 工程副总裁 · 谷歌开发者顾问委员会 (gDAB) 创始成员。🧑‍💻 AI/ML/DevTools 天使投资人 ❯ 旧金山 DevNetwork AI/ML 顾问委员会成员

12 条评论

令人难过的是,如今人们觉得简单明了的信息已经不够了,他们觉得有必要用无聊的小图片来装饰一切。

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

回复 ,作者 fredd (未验证)

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

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

我还认为,这些东西更容易让人跳过细节。他们看到勾或叉,然后就只浏览具体内容。

也许只是我这个老古董的原因,但我喜欢阅读文字。

回复 ,作者 mrahmadawais

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

回复 ,作者 fredd (未验证)

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

回复 ,作者 eyarz (未验证)

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

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

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

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

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

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

回复 ,作者 Zort (未验证)

感谢你的想法。
在你的 .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.