2015-11-14 1 views
1

Je me demande quelles sont les différences dans le format des fichiers/patches créés par diff et git-diff.
Je sais en diff il y a 3 (le "normal", le "compact" -c un et le "unifié" -u un).Quelles sont les différences dans les correctifs/fichiers créés par diff et git diff?

Cependant, il peut y avoir quelques différences et dans certaines situations vous ne pouvez pas échanger librement git diff et diff. Alors:

  1. Sur quoi dépend-elle que vous pouvez utiliser git diff et diff pour le même fichier?
  2. Et quelles sont les différences entre les formats?
  3. Si vous ne pouvez pas échanger les commandes (voir 1.), comment pouvez-vous convertir les fichiers dans l'autre format pour pouvoir les utiliser avec l'autre commande?
  4. Si vous pouvez échanger les commandes (voir 1.): Est-il même recommandé de le faire?
  5. Y a-t-il d'autres différences notables dans les fichiers créés par les deux commandes?
+1

Tout ceci est documenté dans la documentation de référence git (voir https://git-scm.com/docs/git-diff). Grossièrement, git-diff ajoute d'autres en-têtes dans certaines situations. –

Répondre

2
  1. Sur quoi dépend-elle que vous pouvez utiliser git diff et diff pour le même fichier?

simplement si le fichier est dans un arbre de travail git, alors vous seriez en mesure d'utiliser git diff pour montrer les changements pour ce fichier (contre le même fichier que référencé par le git, comme l'indice ou objets blob).
Ceci diffère de 'diff', qui compare fichiers (ce qui signifie que vous avez besoin de deux fichiers, pas seulement un comme dans git diff lorsqu'il est utilisé dans un git)

Comme hvd points sur in the comments:

You can use git diff outside any work tree and pass it two files.
Donc, vous pouvez utiliser git diff dans à peu près n'importe quelle situation, vous pouvez utiliser diff.
L'inverse est pas vrai

git diff --color-words --no-index file1 file2 

  1. Et quelles sont les différences entre les formats?

git diff peut émuler tout format diff (unifié, cru, ...).
Il a aussi un format spécifique à git (--summary, --stat, ...)

Voir aussi:

Un git diff comprendra un en-tête git, avec un "indice de similarité".
Les affichages par défaut pour chaque segment de diff sont very similar to a diff -u.


  1. Si vous ne pouvez pas échanger les commandes (voir 1.) comment pouvez-vous convertir les fichiers dans l'autre format afin que vous puissiez les utiliser avec l'autre commande?

Vous pouvez convertir un git diff dans un format brut ou patch avec cru: --patch-with-raw.
L'inverse est possible: you can apply a diff to a git repo.


  1. Si vous pouvez échanger les commandes (voir 1.): Est-il recommande même de le faire?

Il est si vous n'avez pas git installé (voir the previous example)


  1. Y at-il d'autres différences notables dans les fichiers créés par les deux commandes?

Non: le résultat de l'application d'un patch généré par un diff ou un git diff devrait être le même.

+0

Vous pouvez utiliser 'git diff' en dehors de n'importe quelle arborescence et lui passer deux fichiers. Vous pouvez donc utiliser 'git diff' dans pratiquement toutes les situations où vous pouvez utiliser' diff'. L'inverse n'est pas vrai, comme vous l'avez justement mentionné dans votre réponse. – hvd

+0

@hvd Vrai. J'ai inclus votre commentaire, avec lien et exemple, dans la réponse pour plus de visibilité. – VonC