質問: IPython Notebook で書いたコードをGitで管理したいのですが、 `*.ipynb`をコミットすると差分が見にくくて辛いです。 セル単位でコードが実行できる利点を残しながら、 Gitで差分が把握しやすい方法はないものでしょうか。
回答: ソース:こちら(英語)の人気ある質問 iPythonを使っていないですが、まだ答えが出てないので見つけたことを知らせします。 今のところ(2014年12月)はちゃんとしたやり方がないみたいですが、以下の1でなんとできそうです。 そして解決2でそろそろiPythonそのままでできそうです。 1 コミットと差分を普通通りにできるようなやり方。ソース(英語) 1. gitフィルターを作成します。例えば: `~/bin/ipynb_output_filter.py` ``` #! /usr/bin/python import sys from IPython.nbformat.current import read, write json_in = read(sys.stdin, 'json') for sheet in json_in.worksheets: for cell in sheet.cells: if "outputs" in cell: cell.outputs = [] if "prompt_number" in cell: cell.prompt_number = '' write(json_in, sys.stdout, 'json') ``` 2. そのファイルを実行可能に変更します: `chmod +x ~/bin/ipynb_output_filter.py` 3. `~/.gitattributes`に追加または新規で作成します ``` *.ipynb filter=dropoutput_ipynb ``` 4. 以下のコマンドでgitフィルターを設定します: ``` git config --global core.attributesfile ~/.gitattributes git config --global filter.dropoutput_ipynb.clean ~/bin/ipynb_output_filter.py git config --global filter.dropoutput_ipynb.smudge cat ``` 問題点: * **コミットしたら出力データが残りません!** * ソースであとの細かいこともあります。 2 iPythonそのままで。ソース(英語) こちらはまだはっきり理解していませんが、みんなにこの問題で困っているようなので、いつかきっと解決すると思います。 使い方を聞きましたので答えが出ましたらここでアップします。