Gitで管理しているファイルを暗号化しておきたい場合があるが,
git diff
してももちろん以下のように中身は出力されない.
$ git diff
Binary files a/foo.gpg and b/foo.gpg differ
中身を見たいのであれば, 以下のように設定が必要.
例として, ここでは, GnuPG を使う.
$ git config --global diff.gpg.textconv 'gpg -o-'
そうすると, ~/.gitconfig
に以下のような行が追加されている.
~/.gitconfig
[diff "gpg"]
textconv = gpg -o-
このフィルタを*.gpg
に適用したい場合は, .gitattributes
に以下の行を追加する.
.gitattributes
*.gpg diff=gpg
以上の設定をした上で, git diff
をすると, *.gpg
のファイルに変更があるときに限り,
以下のように2回パスフレーズの入力を求められる. 2
$ git diff
Enter passphrase:
Enter passphrase:
パスフレーズを入力すると, 復号化され, git diff
で見ることができる.
git grep
も--textconv
オプションを付けると, パスフレーズの入力を求められ, 見ることができる.
$ git grep --textconv WORD
Enter passphrase:
参考