在本地 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
。这也是一种普遍模式。
我有全局过滤器来清理我的 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
。这也是一种普遍模式。