Emoji-Log:编写 Git 提交信息的新方法

Emoji-Log:编写 Git 提交信息的新方法

2019年3月17日1 次浏览来源:Linux中国阅读原文

使用 Emoji-Log 为你的提交添加上下文。

我是一名全职的开源开发人员,我喜欢称自己为“开源者”。我从事开源软件工作已经超过十年,并构建了数以百计的开源软件应用程序。

同时我也是“ 避免重复工作 Don’t Repeat Yourself ”(DRY)哲学的忠实粉丝,并且我相信编写更好的 Git 提交消息是 DRY 的一个重要组成部分。它们具有足够的上下文关联,可以作为你开源软件的变更日志。我编写的众多工作流之一是 Emoji-Log,它是一个简单易用的开源 Git 提交日志标准。它通过使用表情符号来创建更好的 Git 提交消息,从而改善了开发人员的体验(DX)。

我使用 Emoji-Log 构建了 VSCode Tips & Tricks 仓库 和我的 ? 紫色 VSCode 主题仓库,以及一个看起来很漂亮的自动变更日志

Emoji-Log 的哲学

我喜欢(很多)表情符号,我很喜欢它们。编程、代码、极客/书呆子、开源……所有这一切本质上都很枯燥,有时甚至很无聊。表情符号帮助我添加颜色和情感。想要将感受添加到这个 2D 的、平板的、基于文本的代码世界并没有错。

相比于数百个表情符号,我学会的更好办法是让类别较小和普遍性。以下是指导使用 Emoji-Log 编写提交信息的原则:

  • 必要的
    • Git 提交信息是必要的。
    • 像下订单一样编写提交信息。
      • 例如,使用 ✅ Add 而不是 ❌ Added
      • 例如,使用 ✅ Create 而不是 ❌ Creating
      • 少数类别易于记忆。
      • 不多也不少
        • 例如 ? NEW? IMPROVE? FIX? DOC? RELEASE✅ TEST
        • 让 Git 的提交基于你所采取的操作
        • 使用像 VSCode 这样的编辑器来提交带有提交信息的正确文件。

        编写提交信息

        仅使用以下 Git 提交信息。简单而小巧的占地面积是 Emoji-Log 的核心。

        • ? NEW: 必要的信息
          • 当你添加一些全新的东西时使用。
            • 例如 ? NEW: 添加 Git 忽略的文件
            • 用于改进/增强代码段,如重构等。
              • 例如 ? IMPROVE: 远程 IP API 函数
              • 修复 bug 时使用,不用解释了吧?
                • 例如 ? FIX: Case converter
                • 添加文档时使用,比如 README.md 甚至是内联文档。
                  • 例如 ? DOC: API 接口教程
                  • 发布新版本时使用。例如, ? RELEASE: Version 2.0.0
                  • 发布新版本时使用。
                    • 例如 ✅ 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 的仓库:

                    你呢?如果你的仓库使用 Emoji-Log,请将这个 Emoji-Log 徽章放到你的 README 中,并给我发送一个拉取请求,以让我可以将你的仓库列在这里。

分享
Baike.dev

baike.dev helps you discover great languages, frameworks, databases, DevOps and cloud-native tools.

Quick links

About

Contribute

Found a great developer tool? Share it with the community.

Submit a tool
© 2026 baike.dev Developer EncyclopediaUpdated daily · Discover great developer tools