You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git Bash:如何在printf输出中使用Git的暂存/未暂存状态颜色

如何在自定义Git Status工具中匹配Git原生配色或使用硬编码配色

优先方案:获取Git运行时定义的配色

Git允许通过git config --get-color命令直接读取其配置的颜色值,让你的工具和用户本地Git的配色保持一致,操作步骤如下:

  1. 获取对应状态的ANSI颜色码

    • 已暂存变更(对应Git Status中绿色行):执行命令 git config --get-color color.status.added,会返回对应的ANSI转义序列(默认是\033[32m)。
    • 未暂存变更(对应Git Status中红色行):执行命令 git config --get-color color.status.changed,默认返回\033[31m。
  2. 在工具中应用颜色
    以Python为例,通过子进程调用命令获取颜色,再在输出时拼接使用:

    import subprocess
    
    def get_git_color(setting):
        try:
            return subprocess.check_output(
                ["git", "config", "--get-color", setting],
                text=True
            ).strip()
        except subprocess.CalledProcessError:
            # 用户未配置对应颜色时返回默认值
            return "\033[32m" if setting == "color.status.added" else "\033[31m"
    
    COLOR_RESET = "\033[0m"
    COLOR_STAGED = get_git_color("color.status.added")
    COLOR_UNSTAGED = get_git_color("color.status.changed")
    
    # 示例输出
    print(f"{COLOR_STAGED}已暂存:README.md{COLOR_RESET}")
    print(f"{COLOR_UNSTAGED}未暂存:main.py{COLOR_RESET}")
    

备选方案:硬编码ANSI颜色

如果不需要适配用户的Git自定义配色,直接使用标准ANSI颜色码即可:

  • 绿色(标记已暂存):\033[32m
  • 红色(标记未暂存):\033[31m
  • 重置颜色:\033[0m

示例Bash脚本:

COLOR_STAGED="\033[32m"
COLOR_UNSTAGED="\033[31m"
COLOR_RESET="\033[0m"

echo -e "${COLOR_STAGED}已暂存:README.md${COLOR_RESET}"
echo -e "${COLOR_UNSTAGED}未暂存:main.py${COLOR_RESET}"

注意:如果终端不支持ANSI颜色,转义序列会直接显示为文本,可先检测TERM环境变量是否包含color来判断终端支持情况。

内容的提问来源于stack exchange,提问作者H.v.M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 01:43:17