Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Synchronisation des Dépôts | Flux de Travail Plus Avancés
Fondamentaux de GitHub

Synchronisation des Dépôts

Glissez pour afficher le menu

Comme mentionné dans le chapitre précédent, il est nécessaire de synchroniser la branche locale avec le dépôt distant. Pour cela, il faut exécuter la commande git pull :

git pull
Tentative de pull

Lorsque la commande git pull a été exécutée, Git a récupéré les mises à jour mais a constaté que les branches locale et distante ont divergé, c'est-à-dire qu'il existe des modifications sur les deux branches qui doivent être conciliées. Git n'a pas pu continuer car il doit savoir comment gérer ces différences. Il faut donc définir l'option merge et exécuter à nouveau la commande git pull :

git config pull.rebase false
Note
Remarque

Nous aborderons l’opération rebase plus tard dans ce cours.

git pull
Conflit de fusion

Git a tenté de fusionner automatiquement les modifications locales et distantes de README.md, mais a rencontré un conflit de fusion. Examinons l'arbre des commits, qui indique où la divergence et les conflits se sont produits :

git log --graph --oneline --all
Arbre des commits

Résolution du conflit

Comme vous pouvez le constater, notre commit local actuel et le commit de la branche main distante partagent un ancêtre commun, mais divergent, ce qui entraîne le conflit de fusion que nous devons résoudre. Pour cela, nous allons ouvrir le fichier README.md dans l'éditeur Vim :

vim README.md
Conflits dans Vim

Pour résoudre ce conflit, il faut passer en mode insertion en appuyant sur i, supprimer les marqueurs de conflit et fusionner ces modifications de la manière suivante :

Conflit résolu

Ensuite, il faut appuyer sur la touche Échap, taper :wq, puis appuyer sur la touche Entrée pour enregistrer les modifications et quitter Vim. Maintenant, pour terminer la fusion, le fichier README.md doit être ajouté à la zone de staging puis validé à l'aide des commandes suivantes :

git add README.md
git commit
Note
Remarque

Après avoir exécuté la commande git commit, l’éditeur de texte par défaut s’ouvrira (le plus souvent, Vim). Vous pouvez soit conserver le message de commit par défaut et quitter Vim de la même manière que précédemment, soit modifier le message puis quitter.

Validation du fichier fusionné

Enfin, il est possible d’exécuter en toute sécurité la commande git push et de vérifier que la fusion à trois voies a réussi en affichant l’arbre des commits :

git log --graph --oneline --all
Arbre des commits

Récapitulatif des actions réalisées dans ces deux chapitres :

  1. Simulation de la collaboration en effectuant des modifications à la fois localement et à distance sur le fichier README.md ;

  2. Validation d’une modification directement dans le dépôt distant, puis réalisation d’une modification différente localement ;

  3. Lors de la tentative de poussée des modifications locales, apparition d’un conflit en raison de nouvelles mises à jour dans le dépôt distant ;

  4. Pour résoudre ce problème, récupération des modifications du dépôt distant, entraînant un conflit de fusion ;

  5. Résolution manuelle du conflit dans le fichier README.md à l’aide de l’éditeur Vim, validation des modifications résolues, puis poussée des mises à jour finales vers le dépôt distant.

question mark

Quelle commande configure Git pour utiliser merge (et non rebase) lors d’un git pull ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 2

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Section 3. Chapitre 2
some-alt