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

如何配置Git实现提交时未跟踪文件置顶显示?

让Git提交提示中的未跟踪文件显示在顶部的方法

可以通过Git的prepare-commit-msg钩子实现这个需求——这个钩子会在Git生成默认提交消息后、打开编辑器前自动运行,我们可以用它调整提交消息的内容顺序。

步骤1:创建钩子脚本

进入你的Git仓库的.git/hooks目录(如果要全局生效,后续会说明),创建名为prepare-commit-msg的文件,写入以下内容:

#!/bin/sh
COMMIT_MSG_FILE="$1"

# 提取提交消息中的未跟踪文件区块
UNTRACKED_CONTENT=$(sed -n '/^# Untracked files:/,$p' "$COMMIT_MSG_FILE")

# 仅当存在未跟踪文件时执行调整
if [ -n "$UNTRACKED_CONTENT" ]; then
    # 先从原消息文件中移除未跟踪文件区块
    sed -i '/^# Untracked files:/,$d' "$COMMIT_MSG_FILE"
    # 将未跟踪文件区块插入到分支状态信息之后
    # 转义特殊字符避免插入时出错
    ESCAPED_CONTENT=$(echo "$UNTRACKED_CONTENT" | sed 's/[\/&]/\\&/g')
    sed -i '/^# Your branch is up to date with/a '"$ESCAPED_CONTENT"'' "$COMMIT_MSG_FILE"
fi

步骤2:赋予脚本执行权限

在终端运行命令,让脚本具备执行权限:

chmod +x .git/hooks/prepare-commit-msg

全局生效(可选)

如果希望所有Git仓库都应用这个设置,按以下步骤操作:

  1. 创建Git模板目录:
mkdir -p ~/.git-template/hooks
  1. 将刚才的prepare-commit-msg脚本复制到该目录:
cp .git/hooks/prepare-commit-msg ~/.git-template/hooks/
  1. 配置Git使用这个模板目录:
git config --global init.templatedir '~/.git-template'

之后新创建的Git仓库会自动包含这个钩子;已有的旧仓库可以手动复制脚本到.git/hooks目录,或者运行git init(不会覆盖现有仓库内容)来应用模板。

效果验证

当你再次执行git commit .且存在未跟踪文件时,提交提示会变成类似这样的结构:

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch provision-device
# Your branch is up to date with 'origin/provision-device'.
#
# Untracked files:
#   missing.go
#
# Changes to be committed:
#   modified:   main.go
#   modified:   pkg/foo/bar.go
#   ...

未跟踪文件的信息会显示在已提交变更的上方,大幅降低被遗漏的概率。

内容的提问来源于stack exchange,提问作者guettli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 17:39:24