Comment comparer deux fichiers qui ne sont pas dans le dépôt en utilisant git


Réponses:


214

gitLe diff est plus fonctionnel que le standard unix diff. Je veux souvent faire cela et comme cette question occupe une place importante sur Google, je veux que cette réponse apparaisse.

Cette question: comment l'utiliser en git diff --color-wordsdehors d'un référentiel Git?

Montre comment utiliser git pour différencier les fichiers dont au moins l'un d'entre eux n'est pas dans le référentiel en utilisant --no-index:

git diff --no-index file1.txt file2.txt

Peu importe lequel est suivi par git et qui ne l'est pas - l'un ou les deux peuvent être non suivis, par exemple:

$ date > x
$ sleep 2
$ date > y
$ git diff --color-words --no-index x y
diff --git a/x b/y
index 6b10c7c..70f036c 100644
--- a/x
+++ a/y
@@ -1 + 1 @@
Wed Jun 10 10:57:45|10:57:47 EDT 2013

La couleur ne peut pas être affichée ici, j'ai donc séparé les modifications avec un tuyau dans l'exemple.


14
Si vous vouliez ce comportement par défaut, vous pouvez ajouter un alias à votre .bashrcfichier (ou ce que vous utilisez):alias diff="git diff --no-index"
contre-être le

1
FYI: Sur Git pour Windows, il y avait un bogue (# 2123) que "--no-index" n'était pas respecté. Cela a été corrigé dans Git pour Windows v2.21.0 (26 février 2019).
StackzOfZtuff

Que signifie la ligne «index 6b10c7c..70f036c 100644»? Je compare 2 binaires, ils diffèrent, mais c'est la seule ligne avec une différence ...
Lukas Salich

salut @LukasSalich il semble que ce format de ligne pourrait être documenté par git (par exemple: git-scm.com/docs/diff-format ) git's diff n'essaye pas de diff des binaires afaik, donc je suppose que cette ligne signifie qu'ils diffèrent , les deux SHA où une modification a été identifiée, puis les autorisations du fichier.
Kyle Burton

3

diff -u

donnera une sortie de contexte unifiée similaire au diff de git.


1
Cependant, il ne fait pas une belle coloration ou n'utilise pas de téléavertisseur.
Xiong Chiamiov

Il ne permet pas non plus un joli mot diff, ( git diff --word-diff).
Stefan van den Akker

0

Utilisez simplement la commande diff:

diff file1.ext file2.ext

2
Hmkay, j'ai essayé cela mais à mon avis, la sortie était tout simplement absurde ... Peut-être que j'avais tort ...
Cedric Reichenbach

vous pouvez exécuter un outil graphique qui fournira une meilleure vue, comme gvimdiff, kompare ou similaire
Eugene Sajine
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.