Git compare deux branches

Git Compare Two Branches



Presque tous les systèmes de contrôle de version ont des options de branchement. Mais Git est connu pour ses capacités de branchement rapide. Les branches Git sont légères. Ainsi, les pénalités de performances pour la création de branches sont minimes et les équipes de développement sont encouragées à créer des branches et à fusionner autant que possible. Mais lorsque vous travaillez avec plusieurs branches, il est important de pouvoir comparer et contraster les différences. Dans ce tutoriel, nous allons parcourir un workflow pour voir comment comparer différentes branches et commits. Commençons par mettre en place la situation suivante :

C00 => C01 => C03 => C06 (maître)









C02 => C04 => C05 (développement)



Les mesures suivantes ont été prises :





  • C00 : Ajout de hello_world.py (branche principale)
  • — Création de la branche développement
  • C01 : modifié hello_world.py pour ajouter un deuxième hello (branche master)
  • C02 : modification de hello_world.py pour ajouter une branche de développement qui dit Bonjour (branche de développement)
  • C03 : Ajout du readme.txt (branche principale)
  • C04 : hello_world.py modifié pour ajouter la branche de développement qui dit à nouveau bonjour (branche de développement)
  • C05 : Ajout d'info.txt (branche de développement)
  • C06 : Modification du fichier readme.txt pour ajouter une deuxième ligne (branche master)

Après tous les commits, la branche « master » contient les fichiers suivants :

bonjour_monde.py
readme.txt



Et la branche « developpement » contient les fichiers suivants :

bonjour_monde.py
info.txt


Comparer les têtes de deux branches

Vous pouvez utiliser le nom des branches pour comparer les têtes de deux branches :

$git diffmaître..développement

différence --allerà/bonjour_monde.py b/bonjour_monde.py
indice e27f806..3899ed3100644
---à/bonjour_monde.py
+++ b/bonjour_monde.py
@@-2,7+2,7 @@

def principal():
imprimer(« Premier bonjour ! »)
- imprimer(« Deuxième bonjour ! »)
-
+ imprimer(« La direction du développement dit bonjour »)
+ imprimer(« La direction du développement dit à nouveau bonjour »)
si__nom__ =='__principale__':
principale()
différence --allerà/info.txtb/info.txt
Nouveaudéposermode100644
indice 0000000..0ab52fd
--- /développeur/nul
+++ b/info.txt
@@-0,0+1 @@
+Nouvelles informations
différence --allerà/readme.txt b/readme.txt
supprimédéposermode100644
indice e29c296..0000000
---à/readme.txt
+++/développeur/nul
@@-1,2+0,0 @@
-1Première ligne de readme.txt
-2Deuxième ligne de readme.txt

La commande diff examine récursivement les modifications. Il a exécuté les diffs suivants :

diff –git a/hello_world.py b/hello_world.py
diff –git a/info.txt b/info.txt
diff –git a/readme.txt b/readme.txt

Ici, « a » représente la branche « maître » et « b » représente la branche de développement. Le « a » est toujours attribué au premier paramètre et « b » au deuxième paramètre. Le /dev/null signifie que la branche n'a pas le fichier.


Comparaison entre les commits

Dans notre exemple, la branche « master » a les commits suivants :

$statut git
Sur le maître de branche
rien à valider, répertoire de travail propre

$git log --une ligne
caa0ddd C06 : readme.txt modifié pour ajouter une deuxième ligne(branche principale)
efaba94 C03 : Ajout du fichier readme.txt(branche principale)
ee60eac C01 : modification de hello_world.py pour ajouter un deuxième bonjour(branche principale)
22b4bf9 C00 : Ajout de hello_world.py(branche principale)

La branche de développement a les commits suivants :

$statut git
Sur le développement de la branche
rien à valider, répertoire de travail propre

$git log --une ligne
df3a4ee C05 : Ajout d'info.txt(branche de développement)
0f0abb8 C04 : hello_world.py modifié pour ajouter la branche de développement dit à nouveau bonjour(branche de développement)
3f611a0 C02 : hello_world.py modifié pour ajouter la branche de développement dit bonjour(branche de développement)
22b4bf9 C00 : Ajout de hello_world.py(branche principale)

Supposons que nous voulions comparer hello_world.py pour les commits C01 et C02. Vous pouvez utiliser les hachages pour comparer :

$git diffee60eac:hello_world.py 3f611a0:hello_world.py

différence --allerà/ee60eac:hello_world.py b/3f611a0:hello_world.py
indice e27f806..72a178d100644
---à/ee60eac:hello_world.py
+++ b/3f611a0:hello_world.py
@@-2,7+2,7 @@

def principal():
imprimer(« Premier bonjour ! »)
- imprimer(« Deuxième bonjour ! »)
+ imprimer(« La direction du développement dit bonjour »)

si__nom__ =='__principale__':
principale()

Vous pouvez également utiliser le même principe pour comparer les commits au sein de la même branche.


Outils de fusion visuelle

Il peut être difficile d'examiner des comparaisons textuelles. Si vous configurez Git outil de diff avec une application de fusion visuelle comme DiffFusionner ou Incomparable , vous pourrez mieux voir les différences.

Une étude plus approfondie:

Les références: