Git グレップ
Git は、チーム環境内での日常のワークフローに役立つ膨大で有益なツールを提供します。 Git を使用すると、Git コマンド git grep
を使用して、データベースに保存したコードとコミットを簡単に調べることができます。
Git で git grep
コマンドを使用する
Git を使用していると、プロジェクト全体でキーワードやフレーズを検索したい状況に出くわすことがあります。 この目的のために、非常に簡単な Git コマンド git grep
を使用してこのタスクを実行し、目的の結果を得ることができます。
このコマンドを使用すると、リポジトリのすべてのローカルおよびリモート ブランチの作業ツリー内のすべてのファイル パスを含め、プロジェクト ディレクトリ内で検索するキーワードのすべての可用性を確認できます。
このブロックでは、Git のこの便利なコマンド、つまり git grep
について詳しく学習します。 以下の例でさらに見てみましょう。
Git コマンド ライン内で、プロジェクト内の何かを検索するための非常に便利で便利なコマンドは git grep
です。 このコマンドの唯一の条件は、プロジェクトが追跡され、コミットせずに作業が完了することです。
たとえば、開発者が特定のブランチで何かを見つけているが、一方で、関連する案件が別のブランチに存在する場合、この状況では出力はターゲットにありません。 したがって、この目的のために、git grep
を使用して、すべてのリポジトリ ブランチで関連事項を見つけます。
git grep
の使用例
開発者が、プロジェクト全体で My Work
という表現を見つけたいとします。 次に、git grep
コマンドを使用して、次のように実行できます。
git grep -n "My Work"
最新のプロジェクトでのみ見つかっているため、出力は、リポジトリのすべてのローカルおよびリモート ブランチ内で作業している最近のプロジェクトのみに従っています。
git grep
コマンドの便利なオプション
この記事では、git grep
コマンドで使用される便利なオプションについても説明します。 以下、1つずつ見ていきましょう。
オプション | 説明 |
---|---|
-I または --ignore-case |
このオプションは、検索キーワードの大文字と小文字を表示するのではなく、検索に役立ちます。 |
-n または --line-number |
このオプションは、一致した行に沿って行番号を前に付けて、コード ベースに簡単にアクセスできるようにするのに役立ちます。 |
--break |
このオプションは、他のファイルから一致した行を改行とともに表示し、すべての結果を表示します。 |
--heading |
このオプションは、1つのファイルから必要な一致の見出しとしてファイル名を表示します。 必要なすべての見出しがユーザーに返されます。 |
-- 行末 |
このオプションはオプションの終わりを示し、その後に <pathspec> リミッターが続きますが、調査結果を表示したい特定のファイルに制限することができます。 |
-c または --count |
このオプションは、合計数に一致する行数を表示します。 |
–help |
このオプションは、grep コマンドを説明することで、アクセス可能なすべてのポイントを確認するのに役立ちます。 |
これらは、検索をより簡単かつ迅速にするために、コマンド git grep
で使用されるいくつかの便利なオプションとその機能です。 これらのオプションがないと、すべてを手動で検索する必要があり、チーム メンバー全体にとって非常に時間のかかる作業になるため、これらのオプションは時間の節約にもなります。
このコマンドの便利な例を次に示します。
例 | 目的 |
---|---|
git grep "検索する文字列" |
完全なコード ベースで文字列を検索するのに役立ちます。 |
git grep -ni "検索する文字列" |
行番号を含む文字列の大文字と小文字を区別しないことで、一致を一覧表示するのに役立ちます。 |
git grep --break "検索文字列" |
異なるファイルからの一致を改行でリストするのに役立ちます。 |
git grep "検索文字列" -- *.php |
このオプションは、拡張子 .php を持つファイルのみを検索します。 一度にすべてのファイルを見つけるために、間にスペースを含めて、さまざまなファイルに言及できます。 |
うまくいけば、上記の git grep
コマンドとそのオプションが、あなたのタスクを完璧に、そしてあっという間に終わらせるのに役立つでしょう。
Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.
LinkedIn