Jupyter notebook をgitにcommitするときに、自動的に不要なデータを削除する方法
最新版の記事を書きました
ぜひ、こちらを参照してください。
はじめに
jupyter notebookは便利ですが、gitで扱うときには少しケアが必要です。理由は
単純なpythonコードではないので、変更履歴の管理が厄介。特にセルの出力まで管理したくない場合が多い。
notebookをそのままアップロードすると、メタデータが追加されたままになり少し気持ち悪い
です。そこで今回は、セルの出力とメタデータの削除をgitへのアップロード時に行うように設定してみました
方法
結論としては、gitフォルダ内の .git/hooks/pre-commit に以下を追加し、権限を設定すればOKです。
このソースでやることは
commit時にセルの出力とメタデータの削除
ipynbをpythonファイルに変換して出力
を自動でやってくれます。
コメントアウトしているコード部分は、セルのアウトプットも削除する場合に使ってください。コメントアウトしていないものは、セルのアウトプットは残しながらメタデータを削除します。
権限の設定は
でOKです。このスクリプトで以下の通りgitを操作すると自動的に出力の削除と、リポジトリへのプッシュを行います。
以下を参考にさせていただきました。
Useful git hooks for working with Jupyter notebooks/Data analysis · GitHub
git pre-commit hook to help support github-based code reviews of Jupyter notebooks in Python. · GitHub
他の方法
他の方法として以下もありますが、VScodeとの相性問題もありそうなのでトライしていません。
mwouts/jupytext: Jupyter Notebooks as Markdown Documents, Julia, Python or R scripts
あと、fast.ai がnbdev2を開発してくれたようなので今後に期待です。
ご参考になれば幸いです!