改良版:Jupyter notebook をgitにcommitするときに、自動的に不要なデータを削除する方法
以下の記事の改良版です
元々の悩み
・gitでipynbをcommitするときに余計なログなどを削除したい
・ipynbではなく、pythonファイルも欲しい
解決案:nbstripoutとgitのpre-commitを使う
方法
nbstripoutをインストール
pip install nbstripout
pre-commitの作成
gitリポジトリに移動し、.git/hooks/pre-commit に以下を記載(なければviなどで新規作成)。
#!/bin/bash
# chmod u+x pre-commit
for file in $(git diff --cached --name-only | grep '\.ipynb$'); do
# ノートブックをPythonスクリプトに変換し、出力ファイル名を明示的に指定
jupyter nbconvert --to script $file --output ${file%.*}
# 変更をステージング
git add .
done
pre-commitの権限を変更
gitリポジトリのトップで以下を実行
chmod u+x .git/hooks/pre-commit
gitへのコミット
git add .
git commit -m “message here”
git push
コミットする際に、pre-commitが動いて、ipynbをpython化したtxtファイルが吐き出され、コミットされるはずです
ぜひ参考にされてください。