1. ホーム
  2. git

[解決済み] Git の全履歴からある文字列を検索する [重複] 。

2022-03-19 16:51:35

質問

あるコードベースがあり、それをオープンソースとしてGitHubにプッシュしたいと思っています。この Git で管理されているソースツリーには、パスワードを含む設定ファイルがあります。このファイルを追跡しないようにし、また、このファイルを .gitignore ファイルを作成します。しかし、機密情報がプッシュされないことを絶対に確認したいのです。おそらく、コミット間に何かが滑り込んだりした場合でしょう。私がこのようなことをするほど不注意であったとは思えませんが、私は ポジティブ .

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

解決方法は?

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

git log -S password

これは、以下の文字列を追加または削除したすべてのコミットを検索します。 password . ここではいくつかのオプションを紹介します。

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