コミットメッセージでGitリポジトリを検索するにはどうすればいいですか? 質問する

コミットメッセージでGitリポジトリを検索するにはどうすればいいですか? 質問する

いくつかのソース コードをコミット メッセージ「Build 0051」で Git にチェックインしました。

しかし、そのソース コードはもう見つからないようです。コマンド ラインを使用して Git リポジトリからこのソースを抽出するにはどうすればよいでしょうか?

ベストアンサー1

コミット ログ (すべてのブランチにわたって) で指定されたテキストを検索するには:

git log --all --grep='Build 0051'

grep 検索で大文字と小文字を無視するには、次のようにします。

git log --all -i --grep='Build 0051'

リポジトリの履歴を通じてコミットの実際の内容を検索するには、次を使用します。

git grep 'Build 0051' $(git rev-list --all)

指定されたテキストのすべてのインスタンス、それを含むファイル名、およびコミット sha1 を表示します。

大文字と小文字を無視してこれを行うには、次を使用します。

git grep -i 'Build 0051' $(git rev-list --all)

これは、差分の変更だけでなく、各ステージのコミットのコンテンツ全体を検索します。差分の変更のみを検索するには、次のいずれかを使用します。

git log -S[searchTerm]
git log -G[searchTerm]

-g最後に、コミットが宙ぶらりんになっていて履歴にまったく接続されていない場合の最後の手段として、フラグ(の略)を使用してreflog自体を検索することができます--walk-reflogs

git log -g --grep='Build 0051'

履歴が失われていると思われる場合は、reflog安全策として を確認してください。

git reflog

HEAD単に「ビルド0051」コミットが表示されない履歴の部分に設定しただけかもしれませんし、実際にそれを吹き飛ばしてしまったのかもしれません。git 対応の reflogこの記事が役に立つかもしれません。

reflog からコミットを回復するには、見つかったコミットの git チェックアウトを実行します (オプションで、参照用に新しいブランチまたはタグを作成します)。

git checkout 77b1f718d19e5cf46e2fab8405a9a0859c9c2889
# alternative, using reflog (see git-ready link provided)
# git checkout HEAD@{10}
git checkout -b build_0051 # make a new branch with the build_0051 as the tip

おすすめ記事