Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Cloner, pousser et tirer avec un dépôt distant

Après cette leçon: Je peux cloner un dépôt, pousser mes commits et tirer ceux des autres.

Leçon de 60 min15 commandesLab Git et Gitea : apprendre clone, commit et push sur un serveur Git à soi

Un dépôt que toute l’équipe partage

Un dépôt distant est une copie d’un dépôt Git gardée sur un serveur que toute une équipe partage. On le clone pour travailler, on y envoie ses commits avec push et on reçoit ceux des autres avec pull.

Sans serveur commun, chacun garde ses commits sur son ordinateur et personne ne voit le travail des autres. Gitea, GitHub et GitLab sont des serveurs de ce genre.

À la fin de cette leçon

Remarque

Je peux cloner un dépôt, pousser mes commits et tirer ceux des autres.

Mots-clés

MotCe que ça veut direExemple
Dépôt distantune copie du dépôt gardée sur un serveur
originle nom habituel du dépôt distant d’où vient le clone
Clonercopier un dépôt distant avec tout son historiquegit clone
Pushenvoyer ses commits vers le dépôt distantgit push
Fetchtélécharger les commits distants sans les fusionnergit fetch
Pulltélécharger les commits distants, puis les fusionnergit pull

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Un dépôt distant est une copie partagée

Un dépôt distant est une copie du dépôt gardée sur un serveur. Celui du labo s’appelle Gitea. Cloner, c’est copier ce dépôt chez vous avec tout son historique.

Git retient d’où vient le clone sous le nom origin. git remote -v affiche ce nom et l’adresse du serveur. Le clone connaît aussi la branche du serveur, origin/main, qu’il compare à votre main.

Cloner hello-git dans le dossier copie

Commande
git clone http://gitea:3000/student/hello-git.git copie

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Voir d’où vient le clone

Commande
git -C copie remote -v

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Comparer votre branche à celle du serveur

Commande
git -C copie status -sb

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Avance et retard comparent deux historiques

Votre branche et celle du serveur peuvent différer. Si vous avez des commits que le serveur n’a pas, vous êtes en avance. S’il en a que vous n’avez pas, vous êtes en retard. Les deux à la fois : les historiques ont divergé.

git push envoie vos commits. git fetch télécharge ceux du serveur sans les fusionner. git pull fait un fetch, puis fusionne.

Exemple travaillé : lire l’état d’une branche

Git écritSensCe qu’on fait
Rien entre crochetsLes deux historiques sont pareilsRien
[ahead 1]Un commit à envoyergit push
[behind 2]Deux commits à recevoirgit pull
[ahead 1, behind 1]Les historiques ont divergégit pull, régler, puis git push

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Faire un commit vide pour l’essai

Commande
git -C copie commit --allow-empty -m "Essai local"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Relire l’état de la branche

Commande
git -C copie status -sb

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Un serveur d’essai pour deux personnes

Pour voir le retard, il faut deux personnes. Vous allez jouer Alice et Bob avec un serveur d’essai : un dépôt nu, sans dossier de travail, sur le disque. Il ne sert qu’à échanger des commits.

Alice envoie deux commits. Bob clone entre les deux et se retrouve en retard. Le commit d’essai du dossier copie ne part jamais vers Gitea.

Créer le serveur d’essai

Commande
git init --bare -b main depot.git

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Cloner le serveur pour Alice

Commande
git clone depot.git alice

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Alice fait un premier commit

Commande
git -C alice commit --allow-empty -m "Premier commit"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Alice pousse sa branche main

Commande
git -C alice push -u origin main

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Cloner le serveur pour Bob

Commande
git clone depot.git bob

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Alice fait un deuxième commit

Commande
git -C alice commit --allow-empty -m "Deuxieme commit"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Alice pousse de nouveau

Commande
git -C alice push

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Bob télécharge sans fusionner

Commande
git -C bob fetch

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Bob lit son retard

Commande
git -C bob status -sb

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Bob reçoit le commit d’Alice

Commande
git -C bob pull

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Une erreur fréquente

Attention

On croit souvent que git push envoie tout, quoi qu’il arrive. Ce n’est pas vrai : si le serveur a des commits que vous n’avez pas, Git refuse le push. Tirez d’abord, réglez les conflits s’il y en a, puis poussez.

À propos de ce labo et de sa source: Lab Git et Gitea : apprendre clone, commit et push sur un serveur Git à soi

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.