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:
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>