Scénario de travail collaboratif à l’aide de branches

le problème

Supposons qu’Alice et Bob veulent collaborer sur le projet super-proj - Alice possède le code initial qu’elle publie sur son dépôt gitlab : https://gitlab.com/alice/super-proj.git - Bob fait un fork du projet d’Alice sur Gitlab - il obtient ainsi sa propre copie de super-proj à l’URL : https://gitlab.com/bob/super-proj.git, qu’il peut cloner pour en obtenir une copie locale :

git clone https://gitlab.com/bob/super-proj.git
  • Alice invite Bob sur son projet en tant que Reporter

  • Bob invite Alice sur son projet en tant que Reporter

  • Alice ajoute le remote de Bob :

git remote add bob https://gitlab.com/bob/super-proj.git
  • Bob ajoute le remote d’Alice :

git remote add alice https://gitlab.com/alice/super-proj.git
  • chacun vérifie qu’il a 2 remotes : origin et celui de son collaborateur en tapant :

git remote -v

(qui doit afficher 4 lignes)

Le travail collaboratif

Bob

Création d’une branche bd et utilisation de celle-ci:

git branch bd
git checkout bd

ou en une seule ligne :

git checkout -b bd
  • …. Fait le travail/Teste puis commite :

git commit -am "Intégration BD"

Bob pousse sa branche sur son remote:

git push origin bd

Bob se rend sur le dépôt d’Alice et y fait un Merge Request (Gitlab) ou Pull Request (sur Github ou Bitbucket)

Alice accepte directement le Merge Request

Alice peut accepter automatiquement le Merge Request de Bob si celui-ci est très simple, directement sur le Gitlab. Dans ce cas elle fait ensuite un simple pull (git pull) de son master pour que sa copie locale soit à jour aussi.

Sinon Alice va tester le code de Bob. Pour celà :

Alice récupère la branche de Bob

git fetch bob bd

ou

git fetch bob bd --tags

pour aussi récupérer des tags éventuels.

Alice consulte la branche de Bob

git checkout Bob/bd

(pour lister toutes les branches : git branch -av)

Alice revient dans son master

git checkout master

puis Alice accepte le Merge Request et met à jour sa copie locale

git pull

Bob

Il reste à Bob à récupérer le master d’Alice pour se mettre à jour :

Soit avec un fetch et un merge

git fetch alice master
git merge alice/master

Soit directement avec un pull

git pull alice master

Commandes utiles avec les branches

Renommage de branche

git branch -m <oldname> <newname>

Modification d’une branche distante

Si vous voulez mettre à jour une branche distante mabranche :

git push origin mabranche --force

A utiliser si d’autres n’ont pas déjà intégré votre branche …

Suppression d’une branche distante

git push origin --delete mabranche