{{tag>dev git}}
====== Afficher les différences sous git ======
La commande **git diff** permet d'afficher les différences introduites:
* entre deux commits,
* entre l'espace de travail et un commit
* etc.
Utilisée sans argument, la commande compare l'index (zone d'assemblage pour le prochain commit) et le répertoire de travail. Si une divergence apparaît, la sortie de la commande git diff l'affiche:
$ git diff
diff --git a/src/init.c b/src/init.c
index 2f8dbac..89e990d 100644
--- a/src/init.c
+++ b/src/init.c
@@ -1,4 +1,5 @@
# Definition de la fonction intialisation.
int init()
{
+ Modification apres insertion dans l'index
}
Dans ce cas, la version présente dans l'espace de travail contient une ligne de plus. Pour mettre à jour l'index avec la version de l'espace de travail:
$git add -u
# ou équivalent
$ git add --update
Après mise à jour de l'index, la commande git diff ne retourne plus de différence.
===== Fichiers modifiés =====
Affiche les noms de fichiers ayant divergé entre deux branches:
$ git diff --name-status master..modif-enfant
ou avec l'option **%%--%%stat** pour afficher une estimation des modifications par fichiers:
git diff --stat --color master..modif-enfant
===== Différences entre branches =====
**diff** de tous les fichiers ayant divergé entre les deux branches:
$ git diff master..branch
===== Différences entre les deux révisions d'un fichier =====
Il est possible de comparer deux révisions d'un fichier. Les trois propositions ci-dessous sont équivalentes et permettent de comparer les modifications approtées entre la révision courante du fichier main.c et celle existante deux commits en arrière.
git diff HEAD^^ HEAD main.c
$ git diff HEAD^^..HEAD -- main.c
$ git diff HEAD~2 HEAD -- main.c
De facon générale on pourra utiliser la syntaxe:
git diff rev_hash_1 rev_hash_2 -- file
===== diff sur les logs =====
Affiche les logs des commits divergeants entre deux branches:
$ git log master..branch
$ git shortlog master..branch
===== Références =====
* http://stackoverflow.com/questions/822811/showing-which-files-have-changed-between-git-branches