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

如何让Git按规则忽略executable_settings.json的特定类型变更

实现方案

Git 原生支持通过 clean/smudge 内容过滤器 实现自定义变更过滤,完全满足需求:在不修改工作区文件的前提下,仅将配置项变更纳入版本控制,自动忽略固定规则的运行时变更。

具体配置步骤

  • 第一步:编写内容过滤脚本
    推荐优先通过JSON解析处理(比正则匹配更稳定,避免误修改其他配置),你可以根据自己的实际运行时变更规则调整过滤逻辑,示例脚本filter-exec-settings.py内容如下:

    import sys, json
    content = json.load(sys.stdin)
    # 过滤不需要追踪的运行时字段,比如时间戳字段
    if "Edited On" in content:
        content["Edited On"] = "FILTERED"
    # 有其他要过滤的运行时字段可以在这里加对应逻辑
    json.dump(content, sys.stdout, indent=2)
    

    你也可以换成正则匹配的逻辑处理非标准格式的内容。

  • 第二步:配置Git过滤器规则
    在仓库根目录执行以下命令,为当前仓库注册过滤器:

    # clean规则:git add暂存文件时执行,过滤掉运行时变更
    git config filter.exec-settings.clean "python3 你存放脚本的路径/filter-exec-settings.py"
    # smudge规则:拉取文件到工作区时不做修改,直接返回原内容
    git config filter.exec-settings.smudge cat
    

    如果需要全局生效,给所有git config命令加--global参数即可。

  • 第三步:绑定文件和过滤器
    在仓库根目录的.gitattributes文件(如果不存在就新建)中添加一行,指定executable_settings.json使用我们定义的过滤器:

    executable_settings.json filter=exec-settings
    

    将.gitattributes提交到仓库,同步给所有协作用户。

注意事项

  • 过滤器规则属于Git本地配置,不会随仓库同步,所有协作用户都需要在本地完成第二步的过滤器配置,可以把配置步骤和脚本放到仓库README中说明,或者编写一键配置脚本降低协作成本。
  • 配置完成后,如果只有运行时变更的内容改动,执行git status不会将该文件标记为改动,仅当有配置项变更时才会识别到文件修改,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:15:00