git 按规则忽略对文件的指定类型更改
git ignore a specified type of change to file by rule
我有一个存储库,其中包含第三方可执行文件 运行 时生成的文件。我需要跟踪此可执行文件生成的文件,以允许我在用户之间同步可执行文件设置。
让我们称这个文件为“executable_settings.json”
文件可以通过两种方式更改:
- 需要添加到存储库的设置更改
- 每次可执行文件 运行 时都会生成 运行 时间更改,并以正则表达式可以捕获的指定方式更改文件(例如“编辑时间:XXXX- YY-ZZ”)。我不希望这些更改出现在回购协议中。
有没有办法让 git 根据规则自动忽略对 executbale_settings.json 的更改?我想找到一种方法,使类型 2 的更改不会显示为对 git 的更改,除非同时也有类型 1 的更改。
这里最好的方法是使用污迹清洁过滤器。 gitattributes(7)
文档中概述了这些内容,但总而言之,如果您在 .gitattributes
中编写一个条目,如下所示:
executable_settings.json filter=exec-settings
然后将以下内容添加到您的配置中:
[filter "exec-settings"]
clean = sed -e '/Edited On:/d'
然后当您使用git add
将文件添加到Git时,它会删除所有包含“Edited On”的行。请注意,这不会本质上阻止它们被 git status
标记为已修改,但会阻止这些行被签入。
请注意,您可以使用不同的命令(例如 jq
或脚本)来过滤掉不需要的条目。一旦您对过滤器感到满意,您应该添加 .gitattributes
、运行 git add --renormalize .
来修复存储库中的文件,然后提交。
我应该指出,这通常是您的系统本地的。无法将此配置包含在存储库中以使其自动调用。这是因为这样做会允许任意代码执行。但是,您可以将安装脚本添加到您的存储库,将此配置作为项目的一部分在本地安装。
我有一个存储库,其中包含第三方可执行文件 运行 时生成的文件。我需要跟踪此可执行文件生成的文件,以允许我在用户之间同步可执行文件设置。
让我们称这个文件为“executable_settings.json”
文件可以通过两种方式更改:
- 需要添加到存储库的设置更改
- 每次可执行文件 运行 时都会生成 运行 时间更改,并以正则表达式可以捕获的指定方式更改文件(例如“编辑时间:XXXX- YY-ZZ”)。我不希望这些更改出现在回购协议中。
有没有办法让 git 根据规则自动忽略对 executbale_settings.json 的更改?我想找到一种方法,使类型 2 的更改不会显示为对 git 的更改,除非同时也有类型 1 的更改。
这里最好的方法是使用污迹清洁过滤器。 gitattributes(7)
文档中概述了这些内容,但总而言之,如果您在 .gitattributes
中编写一个条目,如下所示:
executable_settings.json filter=exec-settings
然后将以下内容添加到您的配置中:
[filter "exec-settings"]
clean = sed -e '/Edited On:/d'
然后当您使用git add
将文件添加到Git时,它会删除所有包含“Edited On”的行。请注意,这不会本质上阻止它们被 git status
标记为已修改,但会阻止这些行被签入。
请注意,您可以使用不同的命令(例如 jq
或脚本)来过滤掉不需要的条目。一旦您对过滤器感到满意,您应该添加 .gitattributes
、运行 git add --renormalize .
来修复存储库中的文件,然后提交。
我应该指出,这通常是您的系统本地的。无法将此配置包含在存储库中以使其自动调用。这是因为这样做会允许任意代码执行。但是,您可以将安装脚本添加到您的存储库,将此配置作为项目的一部分在本地安装。