Rez-de-chausséeG GitPièce 4/7Intermédiaire

Travailler à plusieurs

Relier ton dépôt à un dépôt distant, cloner, envoyer et récupérer des commits avec push, fetch et pull, et proposer tes changements par pull request.

Ce que tu vas apprendre

  • Ce qu'est un dépôt distant et comment le relier à ton projet.
  • Envoyer tes commits avec git push et récupérer ceux des autres avec git fetch et git 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 :

Anatomie d’une 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
Si quelqu'un a poussé des commits que tu n'as pas encore, Git refuse ton 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.

Commence ta séance de travail par un 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 :

  1. Tu crées une branche, par exemple formulaire-contact.
  2. Tu fais tes commits dessus, puis tu la pousses avec git push -u origin formulaire-contact.
  3. Sur GitHub, tu ouvres une pull request : une demande de fusion de ta branche dans main.
  4. Tes collègues relisent les changements, commentent, demandent des corrections. Chaque nouveau commit poussé sur la branche s'ajoute à la pull request.
  5. Une fois validée, la pull request est fusionnée dans main depuis 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é origin par convention, est le point de rendez-vous de l'équipe.
  • git clone récupère un projet existant, git remote add relie un projet local à un dépôt distant.
  • git push -u origin branche la première fois, puis git push.
  • git fetch met à jour origin/main sans toucher ta branche, git pull récupère puis intègre.
  • Une pull request propose de fusionner une branche dans main après relecture.

Pour aller plus loin

Sources officielles

Ensuite

Projet
Lignes de code
Niveau
Rez-de-chaussée
Appartement
Git
Pièce
4/7
Plan n°
git/04.travailler-a-plusieurs
Lignes de code · fiches rédigées à partir des documentations officielles, sources citées en bas de chaque page.