Je pensais que cette question (du titre) pourrait concerner l'utilisation de git diff sur deux fichiers qui ne sont pas nécessairement dans un dépôt. J'ai trouvé que le drapeau --no-index est pour cela, par exemple git diff --no-index --word-diff old_file.txt new_file.txt(--word-diff met en évidence les changements par mot, pas seulement par ligne, ce qui est très utile pour le texte long).
Pat
Réponses:
135
Spécifiez les chemins explicitement:
git diff HEAD:full/path/to/foo full/path/to/bar
Découvrez l' --find-renamesoption dans les git-diffdocuments .
Je tiens à mentionner que vous pouvez comparer deux fichiers en utilisant git diff <path> <path>même s'ils ne sont pas dans un référentiel git.
mitenka
1
@mitenka Je ne pense pas que ce soit correct. Si vous regardez, git diff --helpvous verrez que les seuls modèles pris en charge pour deux fichiers sont git diff [<options>] --no-index [--] <path> <path>. git diff a bne correspond qu'aux modèles de validation, pas aux fichiers.
Doug
@Doug Voici la citation de la commande d'aide que vous avez mentionnée, git-scm.com/docs/git-diff : Afficher les [...] changements entre deux fichiers sur le disque.
mitenka le
@mitenka dit l'aide, sauf si vous utilisez '--no-index', il ne compare pas les fichiers; votre commentaire doit être une réponse distincte; ce n'est pas vrai et ce n'est pas pertinent pour cette réponse.
Doug le
1
@Doug Merci pour votre avis. Voici la citation de l'aide à laquelle vous faites référence: Vous pouvez omettre l' --no-indexoption lors de l'exécution de la commande dans un arbre de travail contrôlé par Git et au moins l'un des chemins pointe en dehors de l'arbre de travail, ou lors de l'exécution de la commande en dehors d'un arbre de travail contrôlé par Git .
mitenka le
78
Je pense que l'utilisation --no-indexest ce que vous recherchez:
git diff [<options>]--no-index [--]<path><path>
comme mentionné dans le manuel de git:
Ce formulaire permet de comparer les deux chemins donnés sur le système de fichiers. Vous pouvez
omettre cette --no-indexoption lors de l'exécution de la commande dans un arbre de travail contrôlé par Git et au moins l'un des chemins pointe en dehors de l'arbre de travail, ou lors de l' exécution de la commande en dehors d' un arbre de travail contrôlé par Git.
@swe c'est certainement une réponse utile, mais l'OP a spécifiquement déclaré que le fichier est dans HEAD, ce qui signifie qu'il est dans un index git. La réponse acceptée répond directement à la question. La réponse acceptée avait également une longueur d'avance sur 6 ans;)
Michael Delgado
3
Cela n'a peut-être pas aidé OP, mais c'était exactement ce que je recherchais.
thislooksfun
Cela répond à la question posée par le titre, si vous esquiviez pour cela sur le Web.
Merlin
3
Si vous utilisez tortoise git, vous pouvez cliquer avec le bouton droit sur un fichier et git un diff en: cliquant avec le bouton droit sur le premier fichier et dans le sous-menu tortoisegit, sélectionnez "Diff later" Ensuite, sur le deuxième fichier, vous pouvez également faire un clic droit sur ce , allez dans le sous-menu tortoisegit puis sélectionnez "Diff avec votre nom de fichier ici.txt"
En utilisant PhpStorm, je copie juste le code de commit précédent et je le compare avec la version actuelle en utilisant l'outil intégré "comparer avec le presse-papiers".
PhpStorm est un IDE commercial. Cette question est de savoir comment faire cela dans le git cli lui-même, pas de présomption de logiciel supplémentaire.
git diff --no-index --word-diff old_file.txt new_file.txt
(--word-diff met en évidence les changements par mot, pas seulement par ligne, ce qui est très utile pour le texte long).Réponses:
Spécifiez les chemins explicitement:
git diff HEAD:full/path/to/foo full/path/to/bar
Découvrez l'
--find-renames
option dans lesgit-diff
documents .Crédit: twaggs .
la source
git diff <path> <path>
même s'ils ne sont pas dans un référentiel git.git diff --help
vous verrez que les seuls modèles pris en charge pour deux fichiers sontgit diff [<options>] --no-index [--] <path> <path>
.git diff a b
ne correspond qu'aux modèles de validation, pas aux fichiers.--no-index
option lors de l'exécution de la commande dans un arbre de travail contrôlé par Git et au moins l'un des chemins pointe en dehors de l'arbre de travail, ou lors de l'exécution de la commande en dehors d'un arbre de travail contrôlé par Git .Je pense que l'utilisation
--no-index
est ce que vous recherchez:comme mentionné dans le manuel de git:
la source
Si vous utilisez tortoise git, vous pouvez cliquer avec le bouton droit sur un fichier et git un diff en: cliquant avec le bouton droit sur le premier fichier et dans le sous-menu tortoisegit, sélectionnez "Diff later" Ensuite, sur le deuxième fichier, vous pouvez également faire un clic droit sur ce , allez dans le sous-menu tortoisegit puis sélectionnez "Diff avec votre nom de fichier ici.txt"
la source
En utilisant PhpStorm, je copie juste le code de commit précédent et je le compare avec la version actuelle en utilisant l'outil intégré "comparer avec le presse-papiers".
la source