Alice et Bob collaborent à l’aide de branches sur un dépôt unique

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

Dépôt initial et invitations

Alice invite Bob sur son projet en tant que developer (droit de lecture et écriture) ou maintainer (tous les droits).

Bob clone le projet d’Alice

Bob va faire un clone du dépôt d’Alice sur Gitlab, pour obtenir une copie locale :

git clone https://gitlab.com/alice/super-proj.git
- chacun vérifie qu'il a un remote : origin en tapant :
```bash
git remote -v

(qui doit afficher 2 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 origin

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.

(ou télécharge directement la branche concernée depuis Gitlab)

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 mis à jourpar Alice pour se mettre à jour

Bob se met à jour avec un fetch et un merge

git fetch origin main
git merge origin/main

Bob se met à jour directement avec un pull

git pull origin 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 par exemple …

Suppression d’une branche distante

git push origin --delete mabranche