Versionnage arborescent

Travailler à plusieurs : notion de branche

Pour travailler à plusieurs, il peut être intéressant de travailler chacun dans son coin à partir d'une version minimale du code et de mettre en commun à la fin.

Dans le cas qui nous occupe c'est ce qui a été fait, si vous exécutez la commande suivante, vous verrez une version arborescente :

1
git log --graph --oneline

FondamentalNotion de branche

Une branche, c'est une divergence avec le travail principal, créée dans le but de ne pas déranger les autres membres du projet.

FondamentalBranche master

La suite de commits qui contient l'ensemble du travail stable et fonctionnel est appelée « branche master », c'est également la toute première branche existante lorsque vous créez un projet. Cependant, pour des raisons éthiques, certains hébergeurs (comme GitHub) préfèrent la nommer main.

FondamentalNotion de fusion

Fusionner (ou par anglicisme, merger), c'est rassembler le travail produit sur deux branches en créant un commit spécial : le commit de fusion (merge).

  • La plupart du temps, cela se passe bien et l'algorithme détermine sans problème comment fusionner  ;

  • Des fois les modifications apportées concernent la même zone du code, et git ne peut pas déterminer tout seul les modifications à apporter  ; il y a conflit, et il faut gérer cela manuellement.

DéfinitionCommit de fusion

Le commit de fusion, c'est le seul commit de git qui peut avoir deux parents. Il contient l'arbitrage entre les deux branches, et détermine comment les modifications de chaque branche doivent être appliquées.

Remarque

Quand l'une des branches ne contient pas de commit depuis la séparation des deux branches, il n'y a pas d'arbitrage à faire, git fusionne donc les deux branches sans créer de commit.

DéfinitionÉtiquette

Une étiquette, c'est une variable dans git qui permet d'identifier une version et qui peut être utilisée de la même manière que le numéro d'un commit.

Exemple

  • L'étiquette HEAD peut être utilisée pour identifier le commit qui est actuellement chargé dans votre répertoire courant, vous l'avez normalement vu bouger.

  • L'étiquette master identifie le commit au bout de la branche master

  • L'étiquette origin/master identifie le bout de la branche master sur le dépôt distant

  • Dans notre cas, l'étiquette alphonse identifie le bout de la branche alphonse.

Remarque

Cela nous amène à un nouvel intérêt de git : collaborer sur un même projet en ne gênant pas les autres dans leur travail.