Recherche…


Syntaxe

  • git diff [options] [<commit>] [--] [<path>…​]
  • git diff [options] --cached [<commit>] [--] [<path>…​]
  • git diff [options] <commit> <commit> [--] [<path>…​]
  • git diff [options] <blob> <blob>
  • git diff [options] [--no-index] [--] <path> <path>

Paramètres

Paramètre Détails
-p, -u, --patch Générer un patch
-s, --no-patch Supprimer la sortie diff. Utile pour les commandes comme git show qui affichent le patch par défaut ou pour annuler l'effet de --patch
--brut Générer le diff au format brut
--diff-algorithm = Choisissez un algorithme de diff. Les variantes sont les suivantes: myers , minimal , patience , histogram
--résumé Générer un résumé condensé des informations d'en-tête étendues telles que les créations, les renommage et les changements de mode
--nom uniquement Afficher uniquement les noms des fichiers modifiés
--name-status Afficher les noms et les statuts des fichiers modifiés Les statuts les plus courants sont M (modifié), A (ajouté) et D (supprimé)
--vérifier Avertir si des modifications introduisent des marqueurs de conflit ou des erreurs d'espacement. Ce qui est considéré comme des espaces blancs est contrôlé par la configuration core.whitespace . Par défaut, les espaces blancs finaux (y compris les lignes composées uniquement d'espaces blancs) et un caractère d'espace immédiatement suivi d'un caractère de tabulation à l'intérieur du retrait initial de la ligne sont considérés comme des espaces. Exit avec un statut non nul si des problèmes sont détectés. Non compatible avec --exit-code
--full-index Au lieu de la première poignée de caractères, affichez les noms complets des objets blob avant et après l'image sur la ligne "index" lors de la génération d'une sortie au format patch.
--binaire En plus de --full-index , --full-index un diff binaire pouvant être appliqué avec git apply
-un texte Traitez tous les fichiers en tant que texte.
--Couleur Définir le mode couleur; c'est-à-dire utiliser --color=always si vous souhaitez réduire le diff et garder la couleur de git

Afficher les différences dans la branche de travail

git diff

Cela montrera les modifications non planifiées sur la branche en cours à partir de la validation précédente. Il ne montrera que les changements relatifs à l'index, ce qui signifie qu'il montre ce que vous pouvez ajouter au prochain commit, mais que ce n'est pas le cas. Pour ajouter (mettre en scène) ces modifications, vous pouvez utiliser git add .

Si un fichier est mis en scène, mais a été modifié après sa mise en place, git diff affiche les différences entre le fichier actuel et la version intermédiaire.

Afficher les différences pour les fichiers mis en scène

git diff --staged

Cela montrera les changements entre le commit précédent et les fichiers actuellement mis en scène.

Remarque: vous pouvez également utiliser les commandes suivantes pour accomplir la même chose:

git diff --cached

Qui est juste un synonyme de --staged ou

git status -v

Ce qui déclenchera les paramètres verbeux de la commande status .

Afficher à la fois les changements mis en scène et non modifiés

Pour afficher tous les changements par étapes ou non, utilisez:

git diff HEAD

REMARQUE: vous pouvez également utiliser la commande suivante:

git status -vv

La différence étant que la sortie de ce dernier vous indiquera en fait quelles modifications sont mises en attente pour la validation et lesquelles ne le sont pas.

Afficher les changements entre deux commits

git diff 1234abc..6789def    # old   new

Ex: Afficher les modifications apportées aux 3 derniers commits:

git diff @~3..@    # HEAD -3   HEAD

Remarque: les deux points (..) sont facultatifs, mais ajoutent de la clarté.

Cela montrera la différence textuelle entre les commits, indépendamment de l'endroit où ils se trouvent dans l'arbre.

Utiliser meld pour voir toutes les modifications dans le répertoire de travail

git difftool -t meld --dir-diff

affichera les modifications du répertoire de travail. Alternativement,

git difftool -t meld --dir-diff  [COMMIT_A] [COMMIT_B]

montrera les différences entre 2 commits spécifiques.

Afficher les différences pour un fichier ou un répertoire spécifique

git diff myfile.txt

Affiche les modifications entre la validation précédente du fichier spécifié ( myfile.txt ) et la version modifiée localement qui n'a pas encore été mise en place.

Cela fonctionne également pour les répertoires:

git diff documentation

Ce qui précède montre les changements entre la validation précédente de tous les fichiers du répertoire spécifié ( documentation/ ) et les versions modifiées localement de ces fichiers, qui n'ont pas encore été transférés.

Pour montrer la différence entre une version d'un fichier dans un commit donné et la version HEAD locale, vous pouvez spécifier la validation à comparer:

git diff 27fa75e myfile.txt

Ou si vous voulez voir la version entre deux commits distincts:

git diff 27fa75e ada9b57 myfile.txt

Pour afficher la différence entre la version spécifiée par le hachage ada9b57 et la dernière validation de la branche my_branchname pour le seul répertoire relatif appelé my_changed_directory/ vous pouvez le faire:

git diff ada9b57 my_branchname my_changed_directory/

Affichage d'un mot-diff pour les longues lignes

git diff [HEAD|--staged...] --word-diff

Plutôt que d'afficher les lignes modifiées, cela affichera les différences entre les lignes. Par exemple, plutôt que:

-Hello world
+Hello world!

Lorsque la ligne entière est marquée comme modifiée, le word-diff modifie le résultat en:

Hello [-world-]{+world!+}

Vous pouvez omettre les marqueurs [- , -] , {+ , +} en spécifiant --word-diff=color ou --color-words . Cela utilisera uniquement le codage couleur pour marquer la différence:

Exemple d'utilisation de git diff --color-words

Affichage d'une fusion à trois voies, y compris l'ancêtre commun

git config --global merge.conflictstyle diff3

Définit le style diff3 par défaut: au lieu du format habituel dans les sections en conflit, affichant les deux fichiers:

<<<<<<< HEAD
left
=======
right
>>>>>>> master

il comprendra une section supplémentaire contenant le texte original (provenant de l'ancêtre commun):

<<<<<<< HEAD
first
second
||||||| 
first
=======
last
>>>>>>> master

Ce format facilite la compréhension des conflits de fusion, c.-à-d. dans ce cas , localement second a été ajoutée, alors que changé à distance d' first à last , à résoudre:

last
second

La même résolution aurait été beaucoup plus difficile avec la valeur par défaut:

<<<<<<< HEAD
first
second
=======
last
>>>>>>> master

Afficher les différences entre la version actuelle et la dernière version

git diff HEAD^ HEAD

Cela montrera les changements entre le commit précédent et le commit en cours.

Fichiers texte codés UTF-16 Diff et fichiers plistes binaires

Vous pouvez modifier les fichiers encodés en UTF-16 (les fichiers de chaînes de localisation d'OS iOS et MacOS en sont des exemples) en spécifiant comment git doit différer ces fichiers.

Ajoutez ce qui suit à votre fichier ~/.gitconfig .

[diff "utf16"]
textconv = "iconv -f utf-16 -t utf-8"

iconv est un programme pour convertir différents encodages .

Ensuite, modifiez ou créez un fichier .gitattributes à la racine du référentiel où vous souhaitez l'utiliser. Ou modifiez simplement ~/.gitattributes .

*.strings diff=utf16

Cela convertira tous les fichiers se terminant par .strings avant que git diffs.

Vous pouvez faire des choses similaires pour d'autres fichiers, qui peuvent être convertis en texte.

Pour les fichiers .gitconfig binaires, vous devez modifier .gitconfig

[diff "plist"]
textconv = plutil -convert xml1 -o -

et .gitattributes

*.plist diff=plist

Comparer les branches

Montrer les changements entre la pointe du new et la pointe de l' original :

git diff original new     # equivalent to original..new

Afficher tous les changements sur le new depuis qu'il est dérivé de l' original :

git diff original...new     # equivalent to $(git merge-base original new)..new

En utilisant un seul paramètre tel que

git diff original

est équivalent à

git diff original..HEAD

Afficher les changements entre deux branches

git diff branch1..branch2

Produire un diff compatible avec les patchs

Parfois, vous avez juste besoin d'un diff pour appliquer à l'aide de patch. Le git --diff ne fonctionne pas. Essayez plutôt ceci:

git diff --no-prefix > some_file.patch

Ensuite, ailleurs, vous pouvez l'inverser:

patch -p0 < some_file.patch

différence entre deux commit ou branch

Pour voir la différence entre deux branches

git diff <branch1>..<branch2>

Pour voir la différence entre deux branches

git diff <commitId1>..<commitId2>

Pour voir diff avec branche actuelle

git diff <branch/commitId>

Pour afficher le résumé des modifications

git diff --stat <branch/commitId>

Pour afficher les fichiers modifiés après une certaine validation

git diff --name-only <commitId>

Pour afficher des fichiers différents d'une branche

git diff --name-only <branchName>

Pour afficher les fichiers modifiés dans un dossier après une certaine validation

git diff --name-only <commitId> <folder_path>


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow