![`git diff` está relacionado a `diff`?](https://rvso.com/image/109224/%60git%20diff%60%20est%C3%A1%20relacionado%20a%20%60diff%60%3F.png)
Está git diff
relacionado a diff
?
É
git diff
implementado com base emdiff
?Éa sintaxe da linha de comando de
git diff
igual aque dediff
? Aprender um ajuda muito a usar o outro?seus arquivos de saída estão seguindo o mesmo formato? Eles podem ser usados por
git patch
epatch
? (Existegit patch
? Como está relacionadopatch
?)
Obrigado.
Responder1
O formato do arquivo é interoperável. Git usa o melhor formato, diff -u
. Também o estende para representar tipos adicionais de alterações.
O equivalente a patch
é git apply
. Ele organiza as alterações no índice e também as aplica à árvore de trabalho.
Lembro-me git apply
de ser mais rigoroso que o patch
, embora a documentação de referência não pareça fazer uma comparação explícita. Menciona vários testes/erros que podem ser ativados ou desativados.
A documentação de referência também sugere que ele poderia ser usado como "um substituto para o patch GNU" - mesmo fora de um repositório git, se você usar uma determinada opção.
Responder2
git-diff oferece mais recursos que diff e não acho que os patches de saída sejam interoperáveis (sem algumas opções adicionais), já que diff produzirá linhas como
diff -ruNa dir1/file1.txt dir2/file1.txt
enquanto git-diff produz linhas como
diff --git a/dir1/file1.txt b/dir2/file1.txt
(observe o prefixo de origem e destino, alternável com --no-prefix
e opções diferentes)
Aqui estão alguns recursos adicionais do git-diff:
Pode gravar arquivos movidos/renomeados, enquantodiferença não pode
Usa modo recursivo, diferenças unificadas e lida com arquivos novos/excluídos por padrão (
diff -ruN
)Suporta diferentes algoritmos para encontrar diferenças
Suporta patches binários git que codificam dados binários como ASCII