`git diff` está relacionado a `diff`?

`git diff` está relacionado a `diff`?

Está git diffrelacionado a diff?

  1. É git diffimplementado com base em diff?

  2. Éa sintaxe da linha de comando degit diffigual aque dediff? Aprender um ajuda muito a usar o outro?

  3. seus arquivos de saída estão seguindo o mesmo formato? Eles podem ser usados ​​por git patche patch? (Existe git patch? Como está relacionado patch?)

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 applyde 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-prefixe 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

informação relacionada