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

如何用gitattribute和git config忽略同类型文件中的多行代码?

解决Git忽略同类型文件多行代码的问题

针对你问的两个实现方式,直接说结论:这两种写法Git都不支持,得换合并命令的方式来做。

关于.gitattributes设置多个过滤器的问题

Git的.gitattributes里,同一类文件只能指定一个过滤器,*.rs filter=filterA + filterB这种写法完全不生效,后声明的过滤器会直接覆盖前面的,所以你之前遇到的覆盖问题是正常的,这种思路走不通。

关于同一个过滤器添加多条clean规则的问题

Git的config里,同一个过滤器的同一个配置项(比如clean)只会保留最后一行的设置,你写两个clean = sed ...的话,后面的会直接覆盖前面的,等于只执行了最后一条sed命令。

正确的做法:合并sed命令

要删除包含abc或def的行,把多个sed操作合并成一条命令就行,两种写法都可以:

  1. 用-e参数串联多个sed指令:
[filter "filterC"]
    clean = sed -e "/abc/d" -e "/def/d"
  1. 用分号分隔多个sed指令:
[filter "filterC"]
    clean = sed "/abc/d; /def/d"

你之前试的sed "/abc*def/d"之所以无效,是因为这个正则的意思是匹配包含abc后接任意数量d再跟ef的行,不是匹配包含abc或者def的行。如果你的需求是删除同时包含abc和def的行,才需要用"/abc.*def/d"(abc在def前面)或者"/def.*abc/d"(def在abc前面),但显然这不是你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 11:07:36