見出し画像

改良版: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ファイルが吐き出され、コミットされるはずです

ぜひ参考にされてください。