Git

Git compare deux branches

Git compare deux 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.Mettons d'abord en place la situation suivante :

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

      \

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

Les mesures suivantes ont été prises :

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

Bonjour le monde.py
Lisez-moi.SMS

Et la branche 'développement' contient les fichiers suivants :

Bonjour le monde.py
Info.SMS


Comparer les têtes de deux branches

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

$ git diff master… développement
diff --git a/hello_world.py b/hello_world.py
indice e27f806… 3899ed3 100644
--- a/hello_world.py
+++ b/hello_world.py
@@ -2,7 +2,7 @@
def principal() :
print("Premier bonjour!")
- print("Deuxième bonjour!")
-
+ print("La branche de développement dit bonjour")
+ print("La branche de développement dit à nouveau bonjour")
if __name__ == "__main__":
principale()
diff --git a/info.txt b/info.SMS
nouveau mode de fichier 100644
indice 0000000… 0ab52fd
--- /dev/null
+++ b/info.SMS
@@ -0,0 +1 @@
+Nouvelle information
diff --git a/readme.txt b/readme.SMS
mode de fichier supprimé 100644
indice e29c296… 0000000
--- un/lisez-moi.SMS
+++ /dev/null
@@ -1,2 +0,0 @@
-1 Première ligne du fichier readme.SMS
-2 Deuxième ligne du fichier readme.SMS

La commande diff examine de manière récursive 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.SMS
diff -git a/readme.txt b/readme.SMS

Ici 'a' représente la branche 'master' et 'b' représente la branche de développement. Le 'a' est toujours assigné 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 :

$ git statut
Sur le maître de branche
rien à valider, répertoire de travail propre
$ git log --oneline
caa0ddd C06 : Lisez-moi modifié.txt pour ajouter une deuxième ligne (branche principale)
efaba94 C03 : Ajout du fichier readme.txt (branche principale)
ee60eac C01 : hello_world modifié.py pour ajouter un deuxième bonjour (branche master)
22b4bf9 C00 : Ajout de hello_world.py (branche principale)

La branche de développement a les commits suivants :

$ git statut
Sur le développement de la branche
rien à valider, répertoire de travail propre
$ git log --oneline
df3a4ee C05 : informations ajoutées.txt (branche de développement)
0f0abb8 C04 : hello_world modifié.py pour ajouter la branche de développement dit à nouveau bonjour (branche de développement)
3f611a0 C02 : hello_world modifié.py 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 le hello_world.py pour les commits C01 et C02. Vous pouvez utiliser les hachages pour comparer :

$ git diff ee60eac:hello_world.py 3f611a0:hello_world.py
diff --git a/ee60eac:hello_world.py b/3f611a0:hello_world.py
indice e27f806… 72a178d 100644
--- a/ee60eac:hello_world.py
+++ b/3f611a0:hello_world.py
@@ -2,7 +2,7 @@
def principal() :
print("Premier bonjour!")
- print("Deuxième bonjour!")
+ print("La branche de développement dit bonjour")
if __name__ == "__main__":
principale()

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


Outils de fusion visuelle

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

Une étude plus approfondie:

Les références:

Comment développer un jeu sur Linux
Il y a dix ans, peu d'utilisateurs de Linux prédisaient que leur système d'exploitation préféré serait un jour une plate-forme de jeu populaire pour l...
Ports Open Source des moteurs de jeux commerciaux
Les récréations de moteur de jeu gratuites, open source et multiplateformes peuvent être utilisées pour jouer à d'anciens ainsi qu'à certains des titr...
Meilleurs jeux de ligne de commande pour Linux
La ligne de commande n'est pas seulement votre plus grand allié lorsque vous utilisez Linux, elle peut également être une source de divertissement car...