Git 履歴全体から文字列を検索する [重複] 質問する

Git 履歴全体から文字列を検索する [重複] 質問する

オープンソースとして GitHub にプッシュしたいコード ベースがあります。この Git で管理されているソース ツリーには、パスワードを含む特定の構成ファイルがあります。このファイルを追跡しないようにし、ファイルにも追加しました。ただし、コミットの間に何かが紛れ込んでも、機密情報がプッシュされないことを絶対に確信したいです。私が不注意でこのようなことをしたとは思いませんが、確信は.gitignore持っていたいです。

Git のすべてを「grep」する方法はありますか? 奇妙に聞こえるかもしれませんが、「すべて」とは、これまで存在したすべてのファイルのすべてのバージョンを意味します。コミットごとに diff ファイルをダンプするコマンドがあれば、うまくいくのではないでしょうか?

ベストアンサー1

Gitは-Sオプションで差分を検索することができます(これはpickaxeと呼ばれます)ドキュメント内

git log -S password

これにより、文字列を追加または削除したコミットが検索されますpassword。いくつかのオプションがあります:

  • -p: は差分を表示します。ファイル ( -p file) を指定すると、パッチが生成されます。
  • -G: は、追加または削除された行が指定された正規表現と一致する差異を検索します。一方、-Sは、「文字列のインスタンスを導入または削除する差異を検索します」。
  • --all: すべてのブランチとタグを検索します。または--branches[=<pattern>]--tags[=<pattern>]

おすすめ記事