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