Travailler à plusieurs
Ce que tu vas apprendre
- Ce qu'est un dépôt distant et comment le relier à ton projet.
- Envoyer tes commits avec
git pushet récupérer ceux des autres avecgit fetchetgit pull. - Le principe d'une pull request sur GitHub.
Le dépôt distant
Jusqu'ici, tout se passait sur ton ordinateur. Pour travailler à plusieurs, il faut une copie partagée du dépôt : le dépôt distant (remote). Il est le plus souvent hébergé sur un service comme GitHub ou GitLab.
Chacun garde son propre dépôt local, avec l'historique complet. Le dépôt distant sert de point de rendez-vous : on y envoie ses commits, on y récupère ceux des autres.
Par convention, le dépôt distant principal s'appelle origin.
Deux façons de commencer
Tu as déjà un projet local
Crée un dépôt sur GitHub (« New repository ») sans y ajouter de README : il doit rester vide pour recevoir ton historique. GitHub affiche alors son adresse. Relie ton projet à cette adresse :
git remote add origin https://github.com/ton-compte/portfolio.git
Pour vérifier les dépôts distants connus :
git remote -v
Le projet existe déjà en ligne
Tu rejoins un projet existant, par exemple le site d'une association. Tu le récupères avec git clone :
git clone https://github.com/asso/site-asso.git
Git crée un dossier site-asso, télécharge tout l'historique et configure origin tout seul. Tu peux travailler tout de suite.
Envoyer tes commits : git push
git push -u origin main
Décortiquons cette commande :
$Programme · git
Le programme à lancer : Git.
- Programme
- Sous-commande
- Option
- Argument
L'option -u relie ta branche locale main à la branche main du dépôt distant. Tu ne l'utilises que la première fois. Ensuite, un simple git push suffit.
Pour publier une autre branche, même principe :
git push -u origin recherche
git push. Il ne veut pas écraser leur travail. Récupère d'abord leurs commits, intègre-les, puis pousse à nouveau.Récupérer le travail des autres
git fetch : regarder sans toucher
git fetch
git fetch télécharge les nouveaux commits du dépôt distant et met à jour les branches de suivi, comme origin/main. Ces branches reflètent l'état du dépôt distant lors de ta dernière synchronisation.
git fetch ne modifie pas ta branche courante ni tes fichiers. Tu peux donc regarder ce qui est arrivé avant de l'intégrer :
git log --oneline main..origin/main
Cette commande liste les commits présents sur origin/main mais pas encore sur ta branche main.
git pull : récupérer et intégrer
git pull
git pull fait un git fetch, puis intègre les changements récupérés dans ta branche courante. Cette intégration se fait par fusion ou par rebase, selon la configuration (réglages pull.rebase et pull.ff). Si les mêmes lignes ont été modifiées des deux côtés, tu retrouves les conflits vus au chapitre sur les branches, et ils se résolvent de la même façon.
git pull sur main. Tu pars ainsi de la version la plus récente, et tu limites les conflits.La pull request
Sur un projet d'équipe, on évite de pousser directement sur main. La méthode habituelle :
- Tu crées une branche, par exemple
formulaire-contact. - Tu fais tes commits dessus, puis tu la pousses avec
git push -u origin formulaire-contact. - Sur GitHub, tu ouvres une pull request : une demande de fusion de ta branche dans
main. - Tes collègues relisent les changements, commentent, demandent des corrections. Chaque nouveau commit poussé sur la branche s'ajoute à la pull request.
- Une fois validée, la pull request est fusionnée dans
maindepuis GitHub.
La pull request n'est pas une commande Git : c'est une fonction de GitHub. GitLab propose la même chose sous le nom de merge request.
git push --force remplace l'historique du dépôt distant par le tien. Sur une branche partagée, il peut effacer le travail de tes collègues. Ne l'utilise jamais sur main ni sur une branche où d'autres travaillent.À retenir
- Le dépôt distant, nommé
originpar convention, est le point de rendez-vous de l'équipe. git clonerécupère un projet existant,git remote addrelie un projet local à un dépôt distant.git push -u origin branchela première fois, puisgit push.git fetchmet à jourorigin/mainsans toucher ta branche,git pullrécupère puis intègre.- Une pull request propose de fusionner une branche dans
mainaprès relecture.
Pour aller plus loin
Sources officielles
Ensuite
Les branches
Créer une branche pour travailler à part, changer de branche, fusionner avec git merge, puis lire et résoudre un conflit.
Annuler une erreur
Annuler une modification, désindexer un fichier, corriger le dernier commit, revenir en arrière avec revert ou reset, sans réécrire un historique déjà poussé.
- Projet
- Lignes de code
- Niveau
- Rez-de-chaussée
- Appartement
- Git
- Pièce
- 4/7
- Plan n°
- git/04.travailler-a-plusieurs