GitLab - 6.7 Résoudre un push rejeté avec git pull

Lorsque plusieurs personnes travaillent sur le même projet, un push peut être refusé. Cette leçon explique pourquoi cela arrive, comment récupérer les changements distants, et ce que signifie le commit de fusion qui apparaît ensuite.

Comprendre le rejet du push

Le push est rejeté quand le dépôt distant contient des changements que vous n'avez pas en local. Le plus souvent, une autre personne a poussé des modifications sur la même branche.

La vidéo prend l'exemple de deux personnes qui modifient le même fichier HTML. La première pousse ses changements, et la seconde voit son push refusé.

Le message d'erreur paraît obscur, mais il signale simplement qu'il faut intégrer ces changements avant de pousser à nouveau.

Récupérer les changements

Il faut d'abord récupérer les changements distants avec git pull, en précisant le dépôt et la branche. Git intègre alors ces modifications à votre copie locale.

Git crée souvent un commit de fusion. Il ressemble à celui qui apparaît quand la branche principale a évolué pendant qu'une autre branche était ouverte.

Une fois la fusion faite, vérifiez les changements, puis poussez à nouveau. La vidéo mentionne aussi le rebase comme autre façon d'intégrer les changements, sans le détailler.

git pull origin master

En résumé

Un push rejeté signale que le dépôt distant contient des changements absents en local. Il faut d'abord les récupérer avec git pull, puis pousser à nouveau. Le commit de fusion qui en résulte est normal lorsque deux personnes ont modifié le même projet.

Points clés

  • Un push est rejeté si le dépôt distant contient des changements absents en local.
  • Ce cas arrive souvent quand une autre personne pousse sur la même branche.
  • git pull origin master récupère et intègre les changements distants.
  • Un commit de fusion peut apparaître après l'intégration.
  • Le rebase est une autre façon d'intégrer les changements.

Questions fréquentes

Pourquoi mon push est-il refusé alors que je n'ai rien changé ?

Quelqu'un d'autre a sans doute poussé des changements sur la même branche. Votre copie locale ne les contient pas encore.

Un commit de fusion est-il une erreur ?

Non. Il marque l'intégration de deux séries de changements. Il apparaît normalement après un git pull lorsque la branche a évolué.

Existe-t-il une autre solution que la fusion ?

La vidéo mentionne le rebase comme alternative, sans en faire la démonstration.