Webサービスやアプリ開発の現場では必須のバージョン管理システム「Git(ギット)」。Gitは、専用のソフトを使えばクリックで直感的に操作することもできますが、いざというときにコマンドが使えると便利です。
前回の 第11話 では、編集中のファイルを一時退避することができる「stash」について学びました。
・スタッシュを保存する
・保存したリストを見る
・スタッシュの復活と削除を同時に行う
今回の第12話では、リポジトリ内の検索ができる「git grep(グレップ)」の使い方を学びます。このマンガを通して、わかばちゃんと一緒にGitの知識を身につけていきましょう!
git grepと普通のgrepってどう違うの?
git grepと普通のgrepの違い
「git grep コマンドを使わなくても、Linux の grep コマンドがあるからそれを使えばいいじゃない」と思いますよね。改めて、普通の grepコマンドとの違いをご紹介します。
git grep コマンドが持つメリットは次の3点です。
ただし、あらかじめ $ cd コマンドで、リポジトリのディレクトリに移動しておく必要があります。
普通のgrepだと、キャッシュなどの必要ないファイルも検索対象になってしまいます。ところが git grep は、追跡中のファイルのみを対象にして検索することができます。
※ちなみに --untracked オプションをつけると、.gitignore に載っているファイルも合わせて検索できます
普通のgrepにない特徴として、git grep は過去のコミットを指定して検索ができます。
たとえば、今からあなたはひとつ前のコミットに戻って検索をしたいとします。普通のgrepで検索をすると、次の手順になります。
$ grep -R “検索したい文字列” //文字列を検索する
$ git checkout - //もといたブランチに戻る
このように3つのコマンドを実行しなければなりませんが、git grep を使うと、次のとおり、たった1つのコマンドで済んでしまいます。
git grep の使い方
一番基本的なコマンドです。検索したい文字列をダブルクォーテーションで囲みます。
ためしに「http://」という古い形式の外部リンクが残っていないかを サンプルリポジトリ で検索してみますね。
このように検索結果が表示されました。左側にファイル名が、右側に該当箇所が表示されています。
・コミットやブランチを指定して検索したい
検索したい文字列に続けて、コミット識別子(コミットIDやブランチ等)を入力すると、その時点のファイルの状態で検索できます。
・特定ワードを含むファイル名のみ表示したい
-l オプションを使うと、ファイル名だけを出力できます。
まとめ
リポジトリ内の検索ができる「git grep(グレップ)」について学びました。
・特定の文字列を含む箇所を検索する(大文字、小文字を区別する)
・コミットやブランチを指定して検索する
・ファイル名のみ表示する
Gitにはまだまだたくさんのコマンドがあります。
次回は、犯人探し(!?)ができるコマンド「git blame」を学びましょう。
▼登場キャラクター紹介
▼わかばちゃんが登場する書籍
▼ これまでの「マンガでわかるGit」
第2話「ブランチの概念」
第3話「マージの仕組み」
第4話「コンフリクトの修正」
第5話「git revert」
第6話「git reset 3種類」
第7話「git reflog」
第8話「git switchとgit restore」
第9話「git diff」
第10話「git cherry-pick」
第11話「git stash」
第12話「git grep」
第13話「git blame」
第14話「git remote」
第15話「.gitconfig でコマンドを短縮」
第16話「.gitconfig と .git/config で複数のGitアカウントを使い分ける」
第17話「prune オプション」
第18話「git tag」
第19話「detached HEAD 状態って何?」