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 :
git log --graph --oneline
Fondamental : Notion 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.
Fondamental : Branche 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
.
Fondamental : Notion 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éfinition : Commit 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 masterL'étiquette
origin/master
identifie le bout de la branche master sur le dépôt distantDans 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.