Pular para o conteúdo principal

Gerador de Patch Unified Diff do Git

API reference

Compare dois blocos de texto e gere um unified diff (.patch) no estilo Git, com cabeçalhos de hunk @@ corretos, usando o algoritmo de diff de Myers. Configure as linhas de contexto e os caminhos de arquivo a/b.

Entrada

Linhas sem alteração exibidas ao redor de cada mudança (o padrão do diff -u é 3).

Saída

Unified diff (.patch)
 

Insira os dois textos para ver as diferenças.

HTML da visualização do diff
 
Isso foi útil?

Mais formas de usar esta ferramenta

API REST

curl -X POST https://api.iotools.cloud/v1/tool/git-unified-diff-patch-generator \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "originalText": "line one\nline two\nline three",
    "modifiedText": "line one\nline 2\nline three",
    "fromFile": "a.txt",
    "toFile": "b.txt",
    "contextLines": "3"
  }'

Troque pela sua própria chave, da sua conta. Os campos da ferramenta viram o corpo da requisição — sem envelope.

Peça a um agente de IA

Use the IOTools `git-unified-diff-patch-generator` tool (Git Unified Diff Patch Generator) on this input:

YOUR_INPUT_HERE

Cole isto em qualquer agente conectado ao servidor MCP do IOTools e depois adicione sua entrada.

Widget para incorporar

<iframe
  src="https://iotools.cloud/embed/git-unified-diff-patch-generator/"
  width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
  title="Gerador de Patch Unified Diff do Git — iotools.cloud"
  sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
  allow="clipboard-write"
  style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>

Coloque isso na sua própria página — grátis, sem chave, só um link de volta.

Custo por chamada de API/MCPA partir de 5 créditos
Precisa de mais créditos?Ver preços

Também disponível via

Guias

Cole duas versões de um arquivo e obtenha um unified diff patch pronto para aplicar — exatamente no formato --- a, +++ b, @@ -l,s +l,s @@ produzido por git diff e diff -u. Ele roda inteiramente no seu navegador, então nada do que você cola sai da sua máquina.

O que é um unified diff?

Um unified diff é o formato de texto padrão para descrever mudanças entre dois arquivos. Cada patch começa com duas linhas de cabeçalho que nomeiam o arquivo original (---) e o arquivo modificado (+++), seguidas de um ou mais hunks. Um hunk começa com um cabeçalho como @@ -12,7 +12,8 @@, que registra a linha inicial e o tamanho de cada lado, e depois lista as linhas de contexto (prefixadas com um espaço), as linhas removidas (-) e as linhas adicionadas (+). É o formato que o Git armazena nos commits, que as ferramentas de code review renderizam e que patch e git apply consomem.

Como usar

  1. Cole o texto original na caixa Original e o texto alterado na caixa Modificado.
  2. Opcionalmente, defina o Caminho do original e o Caminho do modificado — eles se tornam as linhas de cabeçalho --- a.txt / +++ b.txt. Use caminhos reais do repositório (por exemplo, a/src/index.js) se pretender usar git apply no resultado.
  3. Ajuste as Linhas de contexto se precisar de mais ou menos linhas inalteradas ao redor de cada mudança. O padrão de 3 corresponde ao diff -u; defina como 0 para o patch mais compacto possível.
  4. Copie o patch gerado ou baixe-o como um arquivo .patch.

Como o diff é calculado

A ferramenta usa o algoritmo de diff O(ND) de Myers — a mesma abordagem de script de edição mais curto na qual o Git se baseia. O Myers encontra o conjunto mínimo de inserções e remoções que transforma o original no texto modificado e, em seguida, agrupa essas edições em hunks com a quantidade de contexto escolhida. Mudanças adjacentes dentro do dobro da janela de contexto são mescladas em um único hunk, exatamente como o diff -u faz, de modo que a saída é compatível byte a byte com as ferramentas padrão.

Aplicando o patch

Salve a saída como changes.patch e depois aplique-a com git apply changes.patch ou patch -p0 < changes.patch. Se você usou os prefixos de caminho a/… e b/…, o git apply -p1 os mapeia para a sua árvore de trabalho.

É preciso para código?

Sim. O diff em nível de linha é determinístico e corresponde ao diff -u do GNU para as mesmas entradas, incluindo os cabeçalhos de hunk e as contagens de linhas. Ele compara linhas inteiras, então um único caractere alterado aparece como uma linha removida e uma linha adicionada — o comportamento normal para patches baseados em linhas.

Privacidade

Todo o processamento acontece no lado do cliente, no seu navegador. Seu texto nunca é enviado, registrado ou transmitido a um servidor, o que torna a ferramenta segura para código-fonte proprietário e outros arquivos sensíveis.

Perguntas frequentes

Quantas linhas de contexto devo usar? Três é o padrão universal e o que os revisores esperam. Aumente o valor quando um patch precisar de mais código ao redor para ser legível; reduza para 0 para o diff mais compacto.

Posso gerar um patch para um arquivo novo ou excluído? Sim — deixe um dos lados vazio. Um Original vazio gera um patch só com adições; um Modificado vazio gera um patch só com remoções.

diffpatchgitunified-diffmyerscompare

Parte de um fluxo de trabalho

Todas as coleções

Ama as ferramentas? Livre-se dos anúncios.

Um único pagamento remove todos os anúncios da sua conta, para sempre. Sem assinatura, sem rastreamento.