Git
Português (Brasil) ▾Topics ▾Latest version ▾ git-apply last updated in 2.43.0

NOME

git-apply - Aplica um patch aos arquivos e/ou ao índice

RESUMO

git apply [--stat] [--numstat] [--summary] [--check] [--index | --intent-to-add] [--3way]
	  [--apply] [--no-add] [--build-fake-ancestor=<arquivo>] [-R | --reverse]
	  [--allow-binary-replacement | --binary] [--reject] [-z]
	  [-p<n>] [-C<n>] [--inaccurate-eof] [--recount] [--cached]
	  [--ignore-space-change | --ignore-whitespace]
	  [--whitespace=(nowarn|warn|fix|error|error-all)]
	  [--exclude=<caminho>] [--include=<caminho>] [--directory=<root>]
	  [--verbose | --quiet] [--unsafe-paths] [--allow-empty] [<patch>…​]

DESCRIÇÃO

Lê a saída diff informada (ou seja, "um patch") e a aplica aos arquivos. Ao executar a partir de um subdiretório num repositório, os caminhos corrigidos fora do diretório são ignorados. Com a opção --index, o patch também é aplicado ao índice, com a opção --cached, o patch é aplicado apenas ao índice. Sem essas opções, o comando aplica o patch apenas aos arquivos e não exige que eles estejam num repositório Git.

Este comando aplica o patch, mas não cria um commit. Utilize git-am[1] para criar os commits a partir dos patches que foram gerados através do git-format-patch[1] ou que tenham sido recebidos por email.

OPÇÕES

<patch>…​

Os arquivos que serão lidos do patch. - pode ser utilizado para ler a entrada padrão.

--stat

Em vez de aplicar o patch, gere o diffstat na entrada. Desativa o "apply" (aplicar).

--numstat

Semelhante ao --stat porém exibe a quantidade de linhas que foram adicionadas e excluídas na notação decimal do nome do caminho sem a abreviação, tornando-o mais amigável à máquina. Para arquivos binários, gera dois - em vez de 0 0. Desativa o "apply" (aplicar).

--summary

Em vez de aplicar o patch, produza um resumo condensado das informações obtidas dos cabeçalhos estendidos do git diff como criações, renomeações e as alterações do modo. Desativa o "apply" (aplicar).

--check

Em vez de aplicar o patch, verifique se o patch é aplicável à árvore de trabalho atual ou ao arquivo do índice assim como, detecte os erros. Desativa o "apply" (aplicar).

--index

Aplica o patch ao índice e à árvore de trabalho (ou apenas verifica se ele se aplicaria corretamente em ambos caso --check esteja em uso). Observe que --index espera que as entradas do índice e as cópias da árvore de trabalho para os caminhos relevantes sejam idênticos (o seu conteúdo e seus metadados, como o modo arquivo, devem coincidir) e um erro será gerado caso não sejam mesmo que o patch seja aplicado corretamente no índice e na árvore de trabalho de forma isolada.

--cached

Aplica o patch apenas no índice sem afetar a árvore de trabalho. Caso a opção --check esteja em vigor, basta verificar se ele se aplicaria de forma limpa à entrada do índice.

--intent-to-add

Ao aplicar o patch apenas na árvore de trabalho, marque os novos arquivos que serão adicionados ao índice posteriormente (consulte a opção --intent-to-add no git-add[1]). Esta opção é ignorada a menos que seja executada num repositório Git e o comando --index não seja utilizado. Observe que o comando --index pode estar implícito em outras opções como --cached ou --3way.

-3
--3way

Tente a mesclagem de 3 vias caso o patch registre a identidade das bolhas onde de deve aplicar e se tivermos essas bolhas disponíveis localmente, possivelmente deixando os marcadores de conflito nos arquivos da árvore de trabalho para o usuário resolver. Esta opção implica no uso da opção --index, a menos que a opção --cached seja usada, é incompatível com a opção --reject. Quando usado com a opção --cached, quaisquer conflitos são deixados nos estágios mais altos no cache.

--build-fake-ancestor=<arquivo>

O git diff mais recentemente gerado incorporou as informações do índice para cada bolha para ajudar a identificar qual foi a versão original à qual o patch se aplica. Quando esta opção for utilizada e caso as versões originais das bolhas estejam disponíveis localmente, crie um índice temporário contendo essas bolhas.

Quando uma alteração do modo puro é encontrado (que não contém as informações do índice), as informações são lidas a partir do índice atual.

-R
--reverse

Aplique o patch ao contrário.

--reject

Por atomicidade, a predefinição do comando git apply falha o patch inteiro e não toca na árvore de trabalho quando alguns dos pedaços não se aplicarem. Essa opção faz com que se aplique as partes do patch que forem aplicáveis e deixe os pedaços rejeitados nos arquivos * .rej correspondentes.

-z

Quando o comando --numstat for utilizado, não una os nomes dos caminhos, porém utilize um formato legível para a máquina e utilize caracteres NUL para a terminação.

Sem esta opção, os nomes do caminho com caracteres "incomuns" são citados como explicado na variável de configuração core.quotePath (veja git-config[1]).

-p<n>

Remova os <n> componentes do caminho principal (separados por barras) dos caminhos diff tradicionais. Com -p2, um patch contra` a/dir/file` será aplicado diretamente ao file por exemplo. A predefinição é 1.

-C<n>

Assegure que pelo menos <n> linhas ao redor do contexto coincidente antes e após cada alteração. Quando há menos linhas de contexto ao redor, todas elas devem coincidir. É predefinido que nenhum contexto seja ignorado.

--unidiff-zero

É predefinido que o comando git apply espere que o patch que está sendo aplicado seja um diff unificado com pelo menos uma linha relacionada ao contexto. Fornece boas medidas de segurança, porém é interrompido ao aplicar um diff gerado com --unified=0. Para ignorar estas verificações, utilize --unidiff-zero.

Observe que pelas razões expostas acima, a utilização de patches sem contexto é desencorajado.

--apply

Caso utilize qualquer uma das opções marcadas "Desativa o apply" acima, o comando git apply lê e gera as informações solicitadas sem realmente aplicar o patch. Informe essa flag depois destas flags para também aplicar o patch.

--no-add

Ao aplicar um patch, ignore as adições feitas pelo patch. Pode ser utilizado para extrair a parte comum entre os dois arquivos executando o primeiro diff neles e aplicando o resultado com esta opção que aplicaria a parte a ser excluída, mas não a parte da adição.

--allow-binary-replacement
--binary

Historicamente, não permitimos que um patch binário seja aplicado sem uma permissão explícita do usuário, esta opção era o caminho para fazê-lo. Atualmente, nós sempre permitimos que os patches binários sejam aplicados, então isso não é operacional.

--exclude=<path-pattern>

Não aplique as alterações nos arquivos que coincidam com o padrão do caminho informado. Pode ser útil ao importar os conjuntos dos patches onde você queira que determinados arquivos ou diretórios sejam excluídos.

--include=<path-pattern>

Aplique as alterações nos arquivos que coincidam com padrão do caminho informado. Pode ser útil ao importar os conjuntos dos patches, onde você queira incluir certos arquivos ou diretórios.

Quando os padrões --exclude e --include são utilizados, eles são examinados na ordem em que aparecem na linha de comando, a primeira correspondência determina se para cada caminho um patch será utilizado. É predefinido que um patch para um caminho que não coincida com nenhum padrão para incluir/excluir seja utilizado caso não haja um padrão de inclusão na linha de comandos e ignorado caso haja algum padrão para a inclusão.

--ignore-space-change
--ignore-whitespace

Ao aplicar um patch, ignore as alterações no espaço das linhas do contexto, se necessário. As linhas do contexto preservam os seus espaços e não serão corrigidas, independentemente do valor da opção --whitespace. No entanto, as novas linhas ainda serão corrigidas.

--whitespace=<ação>

Ao aplicar um patch, detecte se há erros de espaço numa nova linha ou numa linha que foi modificada. A configuração core.whitespace define o que são considerados erros de espaço. É predefinido que os espaços à direita (incluindo as linhas que consistam apenas nos espaços) e um caractere de espaço que seja imediatamente seguido por um caractere de tabulação dentro do recuo inicial da linha, são considerados erros do espaço.

É predefinido que o comando gere mensagens de aviso, mas continue a aplicar o patch. Quando o comando git-apply é utilizado para gerar as estatísticas e não para aplicar um patch, a predefinição retorna ao valor nowarn.

Você pode utilizar valores diferentes valores de controle para <ação>:

  • nowarn desativa o aviso de espaço à direita.

  • warn envia avisos para alguns desses erros, mas aplica o patch como está (predefinido).

  • fix gera os avisos para alguns destes erros e aplica o patch após corrigí-los (o strip é um sinônimo — a ferramenta costumava considerar apenas os caracteres de espaço como erros e a correção envolvia em removê-los, porém os Gits mais modernos fazem mais que isso).

  • error gera os avisos para alguns destes erros e se recusa a aplicar o patch.

  • error-all é semelhante ao error, porém exibe todos os erros.

--inaccurate-eof

Em determinadas circunstâncias, algumas versões do diff não detectam corretamente uma nova linha que esteja ausente no final do arquivo. Como resultado, os patches criados por estes programas diff não registram as linhas que estejam incompletas de forma correta. Esta opção adiciona a compatibilidade para que seja possível aplicar tais correções contornando este problema.

-v
--verbose

Relate o progresso para o stderr. É predefinido que apenas seja exibida uma mensagem do patch que está sendo aplicado atualmente. Esta opção fará com que as informações adicionais sejam relatadas.

-q
--quiet

Suprime a saída stderr. As mensagens sobre o estado do patch e o progresso não serão impressas.

--recount

Não confie nas contagens da linha nos cabeçalhos, deduza-as inspecionando o patch (após editar o patch sem ajustar os cabeçalhos adequadamente por exemplo).

--directory=<root>

Anexe <root> (raiz) em todos os nomes dos arquivos. Caso "-p" também seja utilizado, ele é aplicado antes de anexar a nova raiz.

Por exemplo, um patch que seja utilizado para a atualização de a/git-gui.sh para b/git-gui.sh, pode ser aplicado ao arquivo na árvore de trabalho modules/git-gui/git-gui.sh ao executar o comando git apply --directory=modules/git-gui.

--unsafe-paths

É predefinido que um patch que tenha efeito fora da área de trabalho (uma árvore de trabalho controlada pelo Git ou um diretório de trabalho atual quando o "git apply" é utilizado como uma reposição do patch GNU) seja rejeitado como um erro (ou um dano).

Quando o comando git apply for utilizado como um "better GNU patch" (patch melhor do que o do GNU), o usuário pode encaminhar a opção --unsafe-paths para substituir esta verificação de segurança. Esta opção não tem efeito quando a opção --index ou --cached estiver em uso.

--allow-empty

Não retorne um erro para as correções que não contenham um diff. Isso inclui correções vazias e correções que tenham apenas um commit com texto.

CONFIGURAÇÃO

Warning

Missing pt_BR/includes/cmd-config-section-all.txt

See original version for this content.

Warning

Missing pt_BR/config/apply.txt

See original version for this content.

SUBMÓDULOS

Caso um patch contenha alguma alteração nos submódulos, o comando git apply tratará estas alterações da seguinte maneira.

Caso --index seja utilizado (explícita ou implicitamente), o commit do submódulo deverá coincidir de forma exata ao índice para que o patch possa ser aplicado. Não serão atualizados qualquer um dos submódulos que tenha uma averiguação, estes check-outs serão completamente ignorados, ou seja, eles não precisam estar atualizados ou limpos.

Caso o --index não seja utilizado, os commit dos submódulos no patch serão ignorados e somente a ausência ou a presença do subdiretório coincidente será verificado e (se possível) atualizado.

VEJA TAMBÉM

GIT

Parte do conjunto git[1]

scroll-to-top