Alice et Bob collaborent à l’aide de branches sur des dépôts séparés

le problème

A présent Alice et Bob vont collaborer en ayant chacun son dépôt séparé.

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ée une branche et l’utilise

git branch bd
git checkout bd

ou en une seule ligne :

git checkout -b bd

Bob fait le travail/Teste puis commite

git commit -am "Intégration BD"

Bob pousse sa branche sur son remote

git push origin bd

Bob fait un merge request

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 un simple pull (git pull) de son main pour que sa copie locale soit à jour aussi.

Alice teste le code de Bob

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 main
git checkout main
Alice accepte le Merge Request

Alice se rend sur son dépôt Gitlab, puis accepte le Merge Request et met à jour sa copie locale :

git pull

Bob se met à jour

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

Bob se met à jour avec un fetch et un merge

git fetch alice main
git merge alice/main

Bob se met à jour directement avec un pull

git pull alice main

Commandes utiles sur 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