Como usar o Grep para pesquisar no repositório Git

Como usar o Grep para pesquisar no repositório Git
Qualquer repositório Git contém muitos arquivos, pastas, ramificações, tags, etc. Às vezes, é necessário pesquisar o conteúdo específico no repositório Git usando um padrão de expressão regular. O comando 'Git Grep' é usado para pesquisar na filial de checkout e arquivos locais. Mas se o usuário estiver pesquisando o conteúdo em uma ramificação, mas o conteúdo é armazenado em outra filial do repositório, ele/ela não obterá a saída pesquisadora. Nesse caso, o usuário precisa executar o comando 'git grep' para aplicar a pesquisa em todas as filiais do repositório.

Parâmetros de configuração do comando grep:

Os parâmetros de comando 'Git Grep' são usados ​​para configurar este comando mencionado abaixo.

Nome do parâmetro Propósito
grep.Tipo de Padrão É usado para definir o comportamento de correspondência padrão.
grep.nome completo Está definido como true para ativar a opção -full -name por padrão.
grep.coluna Ele está definido como true para ativar a opção -Column por padrão.
grep.número da linha Está definido como true para ativar -n opção por padrão.
grep.ExtendedRegexp Ele está definido como true para ativar a opção -extenção -regexp por padrão. Mas esta opção não funcionará se o grep. Tipo de padrão contém outro valor no lugar do valor padrão.
grep. tópicos É usado para definir o número de fios de trabalhador grep.
grep.FallbacktonoIndex Se estiver definido como true, então o Git Grep -No -Index quando o Git Grep executou fora de um repositório Git. O valor padrão deste parâmetro é falso.

Opções do comando Grep:

O 'Git Grep' O comando tem muitas opções para pesquisar o conteúdo do repositório de maneiras diferentes. Algumas das opções de grep comumente usadas descreveram abaixo.

Opção Propósito
-Eu, -Ignore -case É usado para correspondências insensíveis de casos dos padrões e arquivos.
-EU É usado para não corresponder ao padrão em arquivos binários.
-profundidade máxima É usado para cada um dado na linha de comando. O valor de profundidade de -1 indica nenhum limite. Esta opção é ignorada se contém curingas ativas.
-r, -recursive Funciona como -max-depth = -1, e é o valor padrão.
-sem recursivo Funciona como -Max -Depth = 0.
-w, -word -regexp É usado para corresponder ao padrão apenas na palavra limite.
-V, -Invert -in -match É usado para selecionar linhas não correspondentes.
-nome completo É usado para forçar os caminhos para a saída em relação ao diretório superior do projeto.
-e É usado para os padrões que começam - e devem ser usados ​​com o grep.
-e, -ou, -not, (…) Essas opções são usadas para definir os múltiplos padrões para pesquisar. -ou é o operador padrão e -e tem maior precedência do que -ou.
-E, -Extended -Regexp, -g, -Basic -Regexp É usado para padrões de regexp estendidos/básicos do POSIX.
-P, -perl -Regexp É usado para padrões de expressão regular compatíveis com Perl.
-F, -fixed -strings É usado para os padrões de string fixa.
-f É usado para ler os padrões do arquivo.
-n, -linha -número É usado para prefixar o número da linha para corresponder linhas.
-o, -apenas correspondência É usado para imprimir apenas as partes correspondentes (não vazios) de uma linha correspondente.
-C, -Count É usado para mostrar o número de linhas que correspondem.
-quebrar É usado para imprimir uma linha vazia entre as correspondências dos diferentes arquivos.
-ajuda É usado para exibir todas as opções disponíveis com a descrição do comando Grep.

Ativar configuração Grep:

Antes de executar o comando 'Git Grep' deste tutorial, execute o seguinte comando para ativar -Regexp estendido e -n Opções do comando Grep.

$ Git Config -Grep global.estendregexp true
$ Git Config -Grep global.Linho de linho verdadeiro

Uso do comando grep para pesquisa:

Um repositório local nomeado livraria foi usado neste tutorial para verificar a saída do comando Grep para pesquisar conteúdo no repositório. O repositório contém dois arquivos. Estes são lista de livros.php e Booktype.php.

Execute o seguinte comando para pesquisar a palavra 'Tipo de livro' nos arquivos do repositório.

$ Git Grep 'Tipo de livro' $ (Git Rev -List -Al)

A saída a seguir mostra que a palavra 'Tipo de livro' existe em linha 1 do Booktype.php arquivo.

Execute o seguinte comando para pesquisar as linhas dos arquivos do repositório com os valores de commit sha que contêm 'vaia' No início dos arquivos. Aqui, o -i A opção foi usada para pesquisa insensível ao caso.

$ git grep -i 'boo*' $ (git rev -list --l)

A saída a seguir mostra que 'vaia' contém dois arquivos na linha número 1, mas a entrada para o lista de livros.php O arquivo apareceu duas vezes para duas commits.

O padrão foi pesquisado dentro do conteúdo do arquivo de repositório nos comandos anteriores. Execute o seguinte comando para pesquisar o conteúdo de um arquivo específico.

$ git grep -f 'booktype.php.'

A saída a seguir mostra que O Booktype.php Existe um arquivo no repositório atual e o arquivo contém uma única linha.

Execute o seguinte comando para pesquisar o padrão, 'livro' dentro do conteúdo dos arquivos do repositório. Aqui, a opção -e usou para correspondência de padrões.

$ git grep -e 'livro'

A saída a seguir mostra que ambos lista de livros.php e Booktype.php Os arquivos contêm a palavra 'Livro' Na linha número 1.

Execute o seguinte comando para pesquisar vários padrões dentro do conteúdo dos arquivos do repositório. Aqui, a opção -e usou para a correspondência de padrões regex, e o tubo (|) está funcionando como lógico ou. Os arquivos que contêm a palavra 'Livro' ou 'autor' será mostrado após executar o seguinte comando.

$ git grep -e 'livro*| autor.'

A saída a seguir mostra que a palavra 'autor' existe duas vezes no Authorinfo.php arquivo e a palavra 'Livro' existe uma vez no lista de livros.php e Booktype.php arquivo.

Conclusão:

O 'Git Grep' é um comando útil para pesquisar o conteúdo específico no repositório Git. A pesquisa pode ser feita de maneiras diferentes usando as diferentes opções deste comando. Os usos de algumas opções foram descritos neste tutorial usando um repositório de demonstração.