1

Git にコミットする前に機密情報をファイルから自動的に削除するための推奨手順は何ですか?

たとえば、 というファイルに次の内容があるとしますcode.rb

personal_stuff = "some personal stuff"

code.rbバージョン管理にコミットする前に、個人情報を自動的に削除するにはどうすればよいですか? ソリューションは、言語に依存しない必要があります。

4

5 に答える 5

1

「.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\$/;

これにより、rcsIdDate情報が削除されます。関連する「汚れ」フィルターは、その情報を元に戻します。

最後に、git を次のように構成します。

git config --add filter.rcs-keywords.clean  .gitfilters/rcs-keywords.clean
git config --add filter.rcs-keywords.smudge .gitfilters/rcs-keywords.smudge

あなたの場合、クリーンフィルターは機密データを軸にし、汚れフィルターはそれを元に戻します.

于 2013-05-13T14:25:19.560 に答える
1

1 つの解決策は、機密情報を無視される外部ファイルに移動することです。

git でファイルを無視するには、次の 2 つの方法があります。

  • ファイルの使用.gitignore(永続的)
  • git update-indexコマンドの使用(一時的)

あなたの場合、より柔軟なソリューションは次のようになります。

  1. 偽の個人的なもので空のファイルを作成します (などpassword = "mypassword1234"など...)
  2. このファイルをコミットしてプッシュします
  3. 将来の変更を無視するgit update-index --no-assume-unchanged your_file
于 2013-05-13T08:57:12.213 に答える
1

独自のpre-commit フックを作成できます。このフックはコードをスキャンし、気に入らないものが見つかった場合はコミットを拒否します。

実際のフックを記述するのは難しい場合があります。オンラインでいくつかの例を見つけることができるはずです。

于 2013-05-13T08:57:14.957 に答える