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