Git
Português (Brasil) ▾ Topics ▾ Latest version ▾ git-apply last updated in 2.27.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] [--unsafe-paths] [<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 em um 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 em um 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

Quando a opção --check estiver em vigor ou durante a aplicação do patch (que é a predefinição quando nenhuma das opções que o desabilita estiver em vigor), tenha certeza que o patch seja aplicável ao que o arquivo atual do índice registra. Caso o arquivo que será corrigido na árvore de trabalho não esteja atualizado, será sinalizado como um erro. Essa flag também faz com que o arquivo do índice seja atualizado.

--cached

Aplique um patch sem tocar na árvore de trabalho. Em vez disso, pegue os dados no cache, aplique o patch e armazene o resultado no índice, sem utilizar a árvore de trabalho. Implica no uso da opção --index.

--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 em um 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

Quando o patch não for aplicado corretamente, volte a mesclagem bidirecional caso o patch registre a identidade das bolhas aos quais ele deve se aplicar e tivermos estas bolhas disponíveis localmente, possivelmente deixando os marcadores de conflito nos arquivos da árvore de trabalho para que o usuário possa resolver. Implica no uso da opção --index sendo incompatível com as opções --reject e --cached.

--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 linkgit: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 depois de 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 em uma nova linha ou em uma 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 depois de 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.

--recount

Não confie nas contagens da linha nos cabeçalhos, deduza-as inspecionando o patch (depois de 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.

CONFIGURAÇÃO

apply.ignoreWhitespace

Defina como change caso queira que as alterações no espaço sejam sempre ignoradas. Defina com um dos valores entre: no, none, never, false caso queira que as alterações no espaço sejam feitas de forma significativa.

apply.whitespace

Quando nenhum comando --whitespace for utilizado na linha de comandos, é predefinido que este item seja sempre utilizado.

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]