Git にコミットする前に機密情報をファイルから自動的に削除するための推奨手順は何ですか?
たとえば、 というファイルに次の内容があるとしますcode.rb
。
personal_stuff = "some personal stuff"
code.rb
バージョン管理にコミットする前に、個人情報を自動的に削除するにはどうすればよいですか? ソリューションは、言語に依存しない必要があります。
Git にコミットする前に機密情報をファイルから自動的に削除するための推奨手順は何ですか?
たとえば、 というファイルに次の内容があるとしますcode.rb
。
personal_stuff = "some personal stuff"
code.rb
バージョン管理にコミットする前に、個人情報を自動的に削除するにはどうすればよいですか? ソリューションは、言語に依存しない必要があります。
「.gitfilters」で「.gitattributes」を使用します。これは「rcs-keywords」の例です。同じ構造に従いますが、機密データ用のフィルターを使用します。
次のように、属性ファイルがファイル グロブからフィルターにマップされます。
# .gitattributes
# Map file extensions to git filters
*.h filter=rcs-keywords
*.c filter=rcs-keywords
あなたの .gitfilters ファイルは、'clean' と 'smudge' フィルターを実装しています。上記の「rcs-keywords」フィルターの場合、これは次のとおりです。
$ ls .gitfilters/
rcs-keywords.clean* rcs-keywords.smudge*
「クリーン」フィルターは、コミット前に内容を削除します。「汚れ」フィルターは、チェックアウト時にアイテムを追加します。
フィルターは任意のスクリプトです。繰り返しますが、「rcs-keywords」の場合、「clean」フィルターは次のようになります。
#!/usr/bin/perl -p
s/\$Id[^\$]*\$/\$Id\$/;
s/\$Date[^\$]*\$/\$Date\$/;
これにより、rcsId
とDate
情報が削除されます。関連する「汚れ」フィルターは、その情報を元に戻します。
最後に、git を次のように構成します。
git config --add filter.rcs-keywords.clean .gitfilters/rcs-keywords.clean
git config --add filter.rcs-keywords.smudge .gitfilters/rcs-keywords.smudge
あなたの場合、クリーンフィルターは機密データを軸にし、汚れフィルターはそれを元に戻します.
1 つの解決策は、機密情報を無視される外部ファイルに移動することです。
git でファイルを無視するには、次の 2 つの方法があります。
.gitignore
(永続的)あなたの場合、より柔軟なソリューションは次のようになります。
password = "mypassword1234"
など...)git update-index --no-assume-unchanged your_file
独自のpre-commit フックを作成できます。このフックはコードをスキャンし、気に入らないものが見つかった場合はコミットを拒否します。
実際のフックを記述するのは難しい場合があります。オンラインでいくつかの例を見つけることができるはずです。