Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.33.0 → 2.34.1 no changes
- 2.32.0 06/06/21
- 2.30.1 → 2.31.1 no changes
- 2.30.0 12/27/20
- 2.29.1 → 2.29.3 no changes
- 2.29.0 10/19/20
- 2.27.1 → 2.28.1 no changes
- 2.27.0 06/01/20
- 2.26.1 → 2.26.3 no changes
- 2.26.0 03/22/20
- 2.25.2 → 2.25.5 no changes
- 2.25.1 02/17/20
- 2.24.1 → 2.25.0 no changes
- 2.24.0 11/04/19
- 2.22.1 → 2.23.4 no changes
- 2.22.0 06/07/19
- 2.20.1 → 2.21.4 no changes
- 2.20.0 12/09/18
- 2.19.1 → 2.19.6 no changes
- 2.19.0 09/10/18
- 2.18.1 → 2.18.5 no changes
- 2.18.0 06/21/18
- 2.16.6 → 2.17.6 no changes
- 2.15.4 12/06/19
- 2.14.6 12/06/19
- 2.13.7 no changes
- 2.12.5 09/22/17
- 2.10.5 → 2.11.4 no changes
- 2.9.5 07/30/17
- 2.8.6 07/30/17
- 2.7.6 no changes
- 2.6.7 05/05/17
- 2.2.3 → 2.5.6 no changes
- 2.1.4 12/17/14
RESUMO
git grep [-a | --text] [-I] [--textconv] [-i | --ignore-case] [-w | --word-regexp] [-v | --invert-match] [-h|-H] [--full-name] [-E | --extended-regexp] [-G | --basic-regexp] [-P | --perl-regexp] [-F | --fixed-strings] [-n | --line-number] [--column] [-l | --files-with-matches] [-L | --files-without-match] [(-O | --open-files-in-pager) [<pager>]] [-z | --null] [ -o | --only-matching ] [-c | --count] [--all-match] [-q | --quiet] [--max-depth <profundidade>] [--[no-]recursive] [--color[=<quando>] | --no-color] [--break] [--heading] [-p | --show-function] [-A <post-context>] [-B <pre-context>] [-C <context>] [-W | --function-context] [--threads <num>] [-f <arquivo>] [-e] <padrão> [--and|--or|--not|(|)|-e <padrão>…] [--recurse-submodules] [--parent-basename <basename>] [ [--[no-]exclude-standard] [--cached | --no-index | --untracked] | <árvore>…] [--] [<pathspec>…]
DESCRIÇÃO
Procure por padrões especificados nos arquivos rastreados da árvore de trabalho, bolhas registradas no arquivo do índice ou nas bolhas de determinados objetos da árvore. Os padrões são listas de uma ou mais expressões de pesquisa separadas por caracteres de nova linha. Uma cadeia de caracteres vazia utilizada como uma expressão de pesquisa coincide com todas as linhas.
CONFIGURAÇÃO
- grep.lineNumber
-
Caso seja definido como
true
, é predefinido que a opção-n
seja utilizada. - grep.column
-
Caso seja definido como
true
, é predefinido que a opção--column
seja utilizada. - grep.patternType
-
Define o comportamento de correspondência predefinido. A utilização de um valor basic, extended, fixed ou perl ativará as opções
--basic-regexp
,--extended-regexp
,--fixed-strings
, ou--perl-regexp
, enquanto o valor default retornará ao comportamento de coincidências já predefinida. - grep.extendedRegexp
-
Caso seja definido como
true
, a predefinição é que a opção--full-name
seja utilizada. Esta opção é ignorada quando a opção de configuraçãogrep.patternType
for configurada com um valor diferente de default. - grep.threads
-
Quantidade de threads de trabalho "grep" a serem utilizados. If unset (or set to 0), Git will use as many threads as the number of logical cores available.
- grep.fullName
-
Caso seja definido como
true
, é predefinido que a opção--full-name
seja utilizada. - grep.fallbackToNoIndex
-
Caso seja definido como
true
, retorne paragit grep --no-index
caso ogit grep
seja executado fora de um repositório Git. A predefinição retorna parafalse
.
OPÇÕES
- --cached
-
Em vez de procurar por arquivos rastreados na árvore de trabalho, pesquisar por bolhas registradas no índice do arquivo.
- --no-index
-
Localize os arquivos no diretório atual que não sejam gerenciados pelo Git.
- --untracked
-
Além de localizar nos arquivos rastreados da árvore de trabalho, localize também nos arquivos não rastreados.
- --no-exclude-standard
-
Localize também nos arquivos ignorados, ignorando o mecanismo
.gitignore
. Útil apenas com a opção--untracked
. - --exclude-standard
-
Não preste atenção aos arquivos informados que foram ignorados através do mecanismo
.gitignore
. Útil apenas ao pesquisar por arquivos no diretório atual sem a opção ‘--no-index’. - --recurse-submodules
-
Pesquise recursivamente em cada submódulo ativo e averiguado no repositório. Quando utilizado em combinação com a opção
<tree>
, todo o prefixo gerado do submódulo será o nome do objeto<tree>
na origem do projeto. Esta opção não tem qualquer efeito caso--no-index
seja utilizado. - -a
- --text
-
Processe os arquivos binários como se fossem texto.
- --textconv
-
Honre com as configurações do filtro "textconv".
- --no-textconv
-
Não respeite as configurações do filtro textconv. Esta é a predefinição.
- -i
- --ignore-case
-
Ignore as diferenças entre maiúsculas e minúsculas entre os padrões e os arquivos.
- -I
-
Não coincida padrões em arquivos binários.
- --max-depth <profundidade>
-
Para cada
<pathspec>
utilizado na linha de comandos, desça a <profundidade> máxima dos níveis do diretório. Um valor de -1 significa sem limite. Esta opção será ignorada caso <pathspec> contenha curingas ativos. Em outras palavras, caso "a*" coincida com um diretório chamado "a*", o curinga "*" coincidirá literalmente para que--max-depth
ainda seja eficaz. - -r
- --recursive
-
O mesmo que
--max-depth=-1
; Esta é a predefinição. - --no-recursive
-
O mesmo que
--max-depth=0
. - -w
- --word-regexp
-
Coincida com o padrão apenas no limite da palavra (inicie no início de uma linha ou preceda um caractere que não seja uma palavra; termine no final de uma linha ou seguido por um caractere que não seja uma palavra).
- -v
- --invert-match
-
Selecione as linhas que não coincidam.
- -h
- -H
-
É predefinido que o comando exiba o nome do arquivo para cada coincidência. A opção
-h
é utilizada para suprimir esta saída. A opção-H
existe para ser completo e não faz nada exceto a reposição do-h
utilizado anteriormente na linha de comando. - --full-name
-
O comando geralmente gera caminhos relativos ao diretório atual ao ser executado a partir de um subdiretório. Esta opção impõem que os caminhos saiam relativos ao topo do diretório do projeto.
- -E
- --extended-regexp
- -G
- --basic-regexp
-
Para os padrões, utilize uma expressão regular (regexp) POSIX estendido/básico. A predefinição é utilizar uma expressão regular (regexp) básica.
- -p
- --perl-regexp
-
Para os padrões, utilize expressões regulares compatíveis com o Perl.
A compatibilidade para estes tipos de expressões regulares é uma dependência opcional no momento da compilação. Caso o Git não tenha sido compilado com este suporte, o Git será encerrado caso esta opção seja utilizada.
- -F
- --fixed-strings
-
Utilize uma cadeia de caracteres fixos para os padrões (não interprete o padrão como uma expressão regular "regex").
- -n
- --line-number
-
Prefixe o número da linha às linhas coincidentes.
- --column
-
Prefixe o deslocamento do byte (byte-offset) indexado em 1 da primeira coincidência desde o início da linha coincidente.
- -l
- --files-with-matches
- --name-only
- -L
- --files-without-match
-
Em vez de exibir todas as linhas coincidentes, exiba apenas os nomes dos arquivos que contenha (ou não) as coincidências. Para uma melhor compatibilidade com o comando git diff, a opção
--name-only
é um sinônimo de--files-with-matches
. - -O[<pager>]
- --open-files-in-pager[=<pager>]
-
Abra os arquivos coincidentes no pager (não a saída do grep). Caso o pager seja "less" (menor) ou "vi" e o usuário usar apenas um padrão, o primeiro arquivo será posicionado na primeira coincidência de forma automática. O argumento
pager
é opcional; se utilizado, deverá estar preso à opção sem um espaço. Casopager
não seja utilizado, a predefinição do pager será utilizado (consultecore.pager
no git-config[1]). - -z
- --null
-
Use \0 como um delimitador para os nomes do caminho na saída, e as imprima literalmente. Sem esta opção, os nomes do caminho com caracteres "incomuns" são citados como explicado na variável de configuração
core.quotePath
(consulte git-config[1]). - -o
- --only-matching
-
Imprima apenas as partes que coincidam (não vazias) de uma linha coincidente com cada uma dessas partes em uma linha separada na saída.
- -c
- --count
-
Em vez de exibir todas as linhas coincidentes, exiba a quantidade de linhas coincidentes.
- --color[=<quando>]
-
Exibir as coincidências em cores. Always (sempre) é o valor predefinido, as outras opções são "never" ou "auto".
- --no-color
-
Desative o destacamento das coincidências, mesmo quando o arquivo da configuração fornecer a predefinição para a saída colorida. O mesmo que
--color=never
. - --break
-
Imprima uma linha vazia entre as coincidências dos diferentes arquivos.
- --heading
-
Exiba o nome do arquivo acima das coincidências nesse arquivo em vez de exibir no início de cada linha.
- -p
- --show-function
-
Exibe a linha anterior que contenha o nome da função da coincidência, a menos que a linha correspondente seja o próprio nome da função. O nome é determinado da mesma maneira que o git diff elabora os cabeçalhos do patch hunk (consulte Definindo um cabeçalho personalizado do hunk em gitattributes[5]).
- -<num>
- -C <num>
- --context <num>
-
Exiba um
<num>
(quantidade) de linhas iniciais e finais, coloque uma linha contendo--
entre os grupos contínuos coincidentes. - -A <num>
- --after-context <num>
-
Exibe
<num>
(quantidade) de linhas finais e coloque uma linha contendo--
entre os grupos contínuos coincidentes. - -B <num>
- --before-context <num>
-
Exibe
<num>
(quantidade) de linhas iniciais e coloque uma linha contendo--
entre os grupos contínuos coincidentes. - -W
- --function-context
-
Exibe o texto ao redor da linha anterior que contenha um nome da função até o nome anterior ao próximo, exibindo efetivamente toda a função em que a coincidência foi encontrada.
- --threads <num>
-
Quantidade de threads de trabalho "grep" a serem utilizados. Para mais informações consulte
grep.threads
em CONFIGURAÇÃO. - -f <arquivo>
-
Leia os padrões vindos de um
<arquivo>
, um por linha.A passagem do padrão através do <arquivo> permite o provimento de um padrão de pesquisa contendo um \0.
Nem todos os tipos de padrões suportam padrões contendo \0. O Git irá exibir um erro caso um determinado tipo de padrão não tiver compatibilidade com ele. O tipo do padrão
--perl-regexp
quando compilado contra a estrutura do PCRE v2 tem uma compatibilidade mais ampla para esses tipos de padrões.Nas versões do Git anteriores à 2.23.0, os padrões contendo \0 seriam silenciosamente considerados corrigidos. Isso nunca foi documentado, também houve interações ímpares e não documentadas entre, por exemplo, os padrões não ASCII contendo \0 e
--ignore-case
.Em futuras versões, podemos aprender a oferecer suporte aos padrões contendo \0 para mais estruturas de pesquisa, até então morreremos quando o tipo do padrão em questão não mais os suportar.
- -e
-
O próximo parâmetro é o padrão. Esta opção deve ser utilizada para padrões que comecem com
-
e deve ser utilizado em scripts que passam a entrada do usuário ao "grep". Os vários padrões são combinados por or (ou). - --and
- --or
- --not
- ( … )
-
Determina como os vários padrões são combinados utilizando expressões booleanas.
--or
é o operador predefinido.--and
tem maior precedência que--or
.-e
deve ser utilizado para todos os padrões. - --all-match
-
Ao utilizar múltiplas expressões de padrões combinadas com
--or
, este flag é utilizado para limitar a coincidência nos arquivos que possuam linhas que coincidam com todas elas. - -q
- --quiet
-
Não produza linhas coincidentes; em vez disso, encerre com uma condição 0 quando houver uma coincidência e diferente de 0 quando não houver.
- <árvore>…
-
Em vez de localizar os arquivos rastreados na árvore de trabalho, localize as bolhas nas árvores informadas.
- --
-
Sinaliza o fim das opções; o restante dos parâmetros são os limitadores do
<pathspec>
. - <pathspec>…
-
Se utilizado, limite a localização dos caminhos que coincidam a pelo menos um padrão. Ambas são compatíveis, as coincidências dos caminhos principais e os padrões bolha(7).
Para mais detalhes sobre a sintaxe
<pathspec>
, consulte a entrada pathspec em gitglossary[7].
EXEMPLOS
-
git grep 'time_t' -- '*.[ch]'
-
Procura por
time_t
em todos os arquivos rastreados .c e .h no diretório de trabalho e em seus subdiretórios. -
git grep -e '#define' --and \( -e MAX_PATH -e PATH_MAX \)
-
Procura por uma linha que contenha
#define
e até mesmoMAX_PATH
ouPATH_MAX
. -
git grep --all-match -e NODE -e Unexpected
-
Procura por uma linha que tenha
NODE
ouUnexpected
nos arquivos que tenham linhas que coincidam com ambas. -
git grep solução -- :^Documentação
-
Procura por
solução
, excluindo os arquivos emDocumentação
.
NOTAS SOBRE OS ENCADEAMENTOS
A opção --threads
(e a configuração grep.threads) serão ignoradas quando
a opção --open-files-in-pager
for utilizado, impondo uma execução com
thread único.
Ao fazer um grep em um objeto armazenado (com a opção --cached
ou
oferecendo três objetos), a execução com várias threads poderá ser mais
lenta do que uma thread única caso --textconv
seja informado e haja muitas
conversões de texto. Portanto, caso esteja com baixo desempenho, pode ser
desejável utilizar --threads=1
.
GIT
Parte do conjunto git[1]