上下文:
我的团队有一个存储库,里面有很多 jupyter 笔记本。我们经常处理 jupyter 笔记本中的敏感数据,我们希望确保不会意外地将 jupyter 笔记本单元的任何数据输出提交到 git。
为了实现这一点,我将此过滤器添加到 git config 中:
git config filter.strip-notebook-output.clean 'jupyter nbconvert --ClearOutputPreprocessor.enabled=True --to=notebook --stdin --stdout --log-level=ERROR'
然后在存储库级 gitattributes 文件中调用此过滤器,如下所示:
*.ipynb filter=strip-notebook-output
这非常有效,我们像往常一样添加并提交 jupyter 笔记本,而无需记住每次都删除单元输出。
问题:
有时我们希望将单元格输出保留在特定笔记本中,并将其与所有单元格输出一起添加到 git 索引中。本质上,我们希望能够在特定情况下覆盖 gitattributes 过滤器,同时让过滤器在所有其他时间默认运行。这可能吗?如果是,我该如何实施?
我已经尝试用谷歌搜索如何执行此操作,但到目前为止尚未找到答案。
我可以删除 git 属性过滤器,并告诉我的团队在添加到 git 之前始终运行 nbconvert,并每次在每个笔记本文件上启用清除输出,除非他们故意想要保留单元格输出,但这是一个非常危险的选择,因为人们可能会忘记或犯错误(我的一些团队成员是 git 和版本控制的新手)。我希望找到一种解决方案,允许在添加到 git 索引之前/同时默认清除笔记本单元输出,并且在特殊情况下允许添加到单元输出完好无损的 git 笔记本。
尝试
git -c filter.strip-notebook-output.clean= add path/to/a/notebook
在此
git add
中禁用了clean命令,因此内容按原样添加。所有细胞都受到影响。如果你想让一些细胞完好无损,而另一些细胞被清理干净,这个方法就行不通了。