作者:Oliver Nguyen

你有没有对千篇一律的提交信息感到厌烦,永远都是以"update"、"fix"或"feat"开头?你知道吗,表情符号是人类沟通方式最新的进化成果。它们能用一个字符传达情绪和想法,让你的提交信息鲜活起来!想想看,就算外星人来到地球,他们也能很快看懂这些小字符的含义! 😎
新年新气象!让我们把无聊的提交信息留在过去,拥抱表情符号的魔力,让每一次提交都成为一场庆祝! 🥳✨
git.emoji 是一个用 Go 编写的工具,可以让你在提交信息中使用表情符号。它提供了一个简单的命令行界面,帮你为提交挑选合适的表情符号。它提供了一个简单的命令行界面,帮你为提交挑选合适的表情符号。
无论你是在修复 bug、添加新功能,还是更新文档,现在都可以用表情符号来表达自己!
要安装 git.emoji,你需要先在机器上安装 Go。你可以从官方网站下载最新版本的 Go。安装好 Go 之后,可以用以下命令安装 git.emoji:
git clone https://github.com/connectlyai/git.emoji.git
cd git.emoji
./build.sh
现在你的机器上应该已经装好了 git.emoji,通常位于 ~/go/bin/git.emoji。记得将这个目录添加到你的 PATH 中,这样就可以在任何地方使用 git.emoji。
我们来检查一下是否安装成功:
$ which git.emoji
~/go/bin/git.emoji
再试着运行一下 git.emoji:
$ git.emoji
git.emoji - git commit with emoji
git.emoji is a tool to commit your changes with emoji.
It will setup git hooks to commit with emoji, and can
be used as a wrapper of git.
要开始使用 git.emoji,你需要在仓库中设置好 git 钩子(hooks)。你可以在仓库中运行以下命令来完成这一步:
git.emoji setup-hooks
这条命令会设置好使用 git.emoji 进行提交所需的 git 钩子。现在你就可以开始用表情符号提交了!
我们从一次简单的提交开始:
touch README.md
git add .
git.emoji commit -m "edit README"
这条命令会打开一个提示框,让你为提交信息选择表情符号。你可以从一个表情符号列表中选择,并添加一条描述提交内容的信息。选好表情符号并填写好信息后,提交就会带上这个表情符号一起完成。
--- 👉 Please choose an emoji 👈 ----------------------
1. Features 💻 ✨ -feat -ft
2. Bug Fixes 🚧 🐛 -fix -fx
3. SDKs/Libraries 🛠️ 📦 -sdk -lib -pkg -tenets
4. Breaking Changes 🔥 💥 -breaking -br -brk -break
5. Code Refactoring ♻️ -refactor -rf -ref -rft
6. Infrastructure 🐳 -infra -if -in -inf
7. Tests 🚨 🧪 -test -ts -tst
8. Chores 🧼 🧹 -chore -ch -chr
9. Reverts ⏳ ⏪ -revert -rv -rev -rvt
10. Releases 🚀 🔖 -release -rl -rel -rls
11. Others 🔍 -other -ot -oth
HINT: You can use command line flag to choose the type:
git commit -feat -m 'message' # 💻 Features
git commit -ft -m 'message' # 💻 Features
git commit -ft1 -m 'message' # ✨ Features
git commit -ch -m 'message' # 🧼 Chore
git commit -ch1 -m 'message' # 🧹 Chore
Enter a number or abbr or emoji (1 | 1a | ft | ft1):
举个例子,如果你想提交一个新功能,可以输入数字 1 或缩写 ft 来选中 Features 分类和 💻 表情符号。每个分类下都有一组可选的表情符号,用来描述你的提交。如果想改用同一分类下的下一个表情符号,可以输入 1a 或 ft1 来选中 ✨ 表情符号,以此类推。
除了使用交互式提示外,你也可以直接从命令行用表情符号完成提交。使用 -<abbr> 标志来选择对应的表情符号。例如,要提交一个新功能,可以使用以下命令:
git.emoji commit -feat -m "add new feature" # use the 💻 emoji for Features
git.emoji commit -ft -m "add new feature" # use the 💻 emoji for Features
git.emoji commit -ft1 -m "add new feature" # use the ✨ emoji for Features
这样,你就可以在不进入交互提示的情况下,快速用表情符号提交改动。
如果你不想每次提交都输入 git.emoji,可以把 git.emoji 作为 git 的别名封装起来。在你的 shell 配置文件中(例如 .bashrc、.zshrc、.bash_profile)添加以下这行:
alias git=git.emoji
现在你可以像平时一样使用 git,它会自动使用 git.emoji 来完成你的提交。
git commit -feat1 -m "add new feature" # use the ✨ emoji for Features
不只是提交,任何涉及提交动作的 git 命令,比如 rebase、merge 或 cherry-pick,只要提交信息中没有表情符号,git.emoji 都会提示你为该提交信息选择一个表情符号。这样就能确保所有提交始终保持一致且富有表现力。
你不必局限于 git.emoji 提供的默认表情符号。你可以随时使用自己喜欢的表情符号,可以在提交改动时直接输入表情符号,也可以在本地的 emoji.config 文件中自定义表情符号。
目前,emoji.config 文件支持两个存放位置:
用第一种方式,你可以在仓库中自定义并与团队共享表情符号配置。用第二种方式,则只会为你的本地仓库自定义表情符号。
要开始自定义表情符号,你可以运行这条命令:
git.emoji write-config
这会询问你想把 emoji.config 文件保存在哪里:
Current config file: /Users/i/ws/conn/git.emoji/.git/emoji.config
Where do you want to write the config file?
1. /Users/i/ws/conn/git.emoji/.git/emoji.config
2. /Users/i/ws/conn/git.emoji/emoji.config
Enter a number:
配置文件的样式如下:
[git.emoji "Features"]
icons = 💻 ✨
alias = feat ft
[git.emoji "Bug Fixes"]
icons = 🚧 🐛
alias = fix fx
[git.emoji "SDKs/Libraries"]
icons = 🛠️ 📦
alias = sdk lib pkg tenets
[git.emoji "Breaking Changes"]
icons = 🔥 💥
alias = breaking br brk break
[git.emoji "Code Refactoring"]
icons = ♻️
alias = refactor rf ref rft
[git.emoji "Infrastructure"]
icons = 🐳
alias = infra if in inf
[git.emoji "Tests"]
icons = 🚨 🧪
alias = test ts tst
[git.emoji "Chores"]
icons = 🧼 🧹
alias = chore ch chr
[git.emoji "Reverts"]
icons = ⏳ ⏪
alias = revert rv rev rvt
[git.emoji "Releases"]
icons = 🚀 🔖
alias = release rl rel rls
[git.emoji "Others"]
icons = 🔍
alias = other ot oth
只需编辑这个文件,添加你喜欢的表情符号,创建任意你想要的分类,然后保存文件。现在你就可以在提交中使用这些表情符号了!
git.emoji 的原理是在你的仓库中设置 git 钩子,用来拦截提交信息。当你进行提交时,git 钩子会调用 git.emoji,提示你为提交信息选择一个表情符号。选好表情符号后,git.emoji 会把这个表情符号加入你的提交信息,然后完成提交。
git 钩子设置在仓库的 .git/hooks 目录中。如果你查看这个目录,会看到一堆钩子文件:
$ ls .git/hooks
applypatch-msg.sample post-commit pre-commit.sample prepare-commit-msg.sample
commit-msg post-merge pre-merge-commit.sample push-to-checkout.sample
commit-msg.sample post-rewrite pre-push.sample reference-transaction
fsmonitor-watchman.sample post-update.sample pre-rebase.sample update.sample
post-applypatch pre-applypatch.sample pre-receive.sample
post-checkout pre-auto-gc prepare-commit-msg
每当 git 运行一个会触发钩子的命令时,就会执行对应的钩子脚本。例如,当你进行提交时,git 会运行 commit-msg 钩子。这正是 git.emoji 发挥作用的地方。它提供了一个脚本,可以作为 commit-msg 钩子使用,提示你为提交信息选择一个表情符号。
默认情况下,这些钩子都是空的示例 shell 脚本。运行 git.emoji setup-hooks 之后,仓库中的 commit-msg 钩子会被更新,加入 git.emoji 脚本。这个脚本会调用 git.emoji,提示你为提交信息选择一个表情符号:
$ cat .git/hooks/commit-msg
#!/bin/bash
## START GIT.EMOJI
if [[ -x /Users/i/go/bin/git.emoji ]]; then
/Users/i/go/bin/git.emoji gmoji-commit-msg "$@" < /dev/tty || exit $?
fi
## END GIT.EMOJI
所以你大概明白了。每当你进行提交时,commit-msg 钩子都会调用 git.emoji,提示你为提交信息选择一个表情符号。选好表情符号后,git.emoji 会通过编辑 .git/COMMIT_EDITMSG 文件,把表情符号加入你的提交信息。
另一个相关的钩子是 prepare-commit-msg,它在提交信息编辑器打开之前被调用。这也是 git.emoji 能在你进行 rebase、merge 或 cherry-pick 时自动为提交信息添加表情符号的原因。
git.emoji 为你的代码提交带来了一种新鲜且富有表现力的方式,通过给提交信息添加表情符号来实现。它让团队内部的沟通更加清晰有趣,无论你是在修复 bug、添加功能还是发布更新,提交意图都一目了然。凭借与 Git 钩子的无缝集成以及可自定义的表情符号配置,它是一个能提升你工作流程的实用工具。
那为什么还要坚持用无聊的提交信息呢?不如让它们变得生动而有意义!开启新的一年,用表情符号升级你的提交吧!🎉
我是 Oliver Nguyen —— Connectly.ai 的一名软件工程师。我喜欢不断学习,每天都希望看到更好的自己。偶尔会分拆出一些新的开源项目。在旅程中分享知识和想法。
本文同时发布于 olivernguyen.io。