在本地 git 配置中使用 smudge 和 cat 覆盖过滤器

Overriding filter with smudge and cat in git config locally

我有全局过滤器来清理我的 Jupyter 笔记本的输出。我在 git 中使用以下 --global 设置来执行此操作:
.git配置:

filter.clean_ipynb.clean=/home/username/.scripts/ipynb_drop_output.py
filter.clean_ipynb.smudge=cat

.git属性:

*.ipynb filter=clean_ipynb

现在我有一个存储库,我不想在其中使用此过滤器,在本地存储库中覆盖它的最佳方法是什么?

在您要覆盖此 filter 设置的一个存储库的 .gitattributes$GIT_DIR/info/attributes 文件中,1 使用:

*.ipynb !filter

这会将 filter 设置恢复为“未指定”。

这适用于所有属性,而不仅仅是 filter。因为 filter 仅在 设置 为某个特定值时才起作用,所以 -filter 也可以起作用;因为 filter 只取一个值,所以 filter=dummy 也可以,只要你没有 filter.dummy.* 设置。但是 !filter 才是正确的选择。


1如果您希望新克隆复制此设置,请使用 .gitattributes。如果您希望新克隆 而不是 复制此设置,请使用 $GIT_DIR/info/attributes。这也是一种普遍模式。