Git : résoudre un conflit

Quand Git ne sait pas fusionner seul : les mêmes lignes modifiées des deux côtés, les marqueurs de conflit, résoudre, indexer, conclure la fusion ou l'abandonner avec merge --abort.

  • 20 cartes
  • 5 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation
  5. Comprendre

Quelques cartes du deck

  • Conflit de fusion : de quoi s'agit-il ?

    Voir la réponse

    Situation où deux branches ont modifié les mêmes lignes d'un fichier, ou l'une a supprimé ce que l'autre a modifié : Git ne peut pas choisir seul.

    Git compare chaque côté à l'ancêtre commun. Si les modifications ne se chevauchent pas, il fusionne seul ; sinon il s'arrête et demande de trancher.

  • Tu es sur la branche main et lances git merge menu. Que représente le bloc entre <<<<<<< HEAD et ======= ?

    ```text
    <<<<<<< HEAD
    Salut
    =======
    Hello
    >>>>>>> menu
    `

    • La version de la branche main, celle où tu te trouves
    • La version de la branche menu, que tu fusionnes
    • La version de l'ancêtre commun des deux branches
    • La version du dépôt distant, avant ton dernier commit
    Voir la réponse

    La version de la branche main, celle où tu te trouves

    Le haut est ce que HEAD, donc ta branche courante, contient ; le bas est ce que la branche fusionnée apporte. L'ancêtre commun n'est pas affiché par défaut.

  • Dans un fichier en conflit, le bloc entre le marqueur d'ouverture et le séparateur est la version de la branche …, et celui entre le séparateur et la fermeture est celle de la branche ….

    Voir la réponse

    Dans un fichier en conflit, le bloc entre le marqueur d'ouverture et le séparateur est la version de la branche courante, et celui entre le séparateur et la fermeture est celle de la branche fusionnée.

    Le marqueur d'ouverture porte HEAD, c'est-à-dire la branche où tu es ; celui de fermeture porte le nom de la branche que tu fusionnes.

  • Marqueurs de conflit : de quoi s'agit-il ?

    Voir la réponse

    Lignes que Git écrit dans le fichier pour délimiter les deux versions : une ouverture, un séparateur et une fermeture.

    Ils ouvrent avec sept signes inférieurs et HEAD, séparent par sept signes égal, ferment par sept signes supérieurs et le nom de l'autre branche. Ils ne doivent jamais être validés.

  • Un conflit sur t.txt te dépasse et tu veux repartir de l'état d'avant la fusion. Que fais-tu ?

    • git switch main pour quitter la fusion
    • git commit -am "conflit" pour reprendre plus tard
    • git branch -d menu pour supprimer la branche fautive
    • git merge --abort
    Voir la réponse

    git merge --abort

    git merge --abort annule la fusion sans rien perdre. git switch est refusé pendant une fusion (« cannot switch branch while merging »), commiter enregistrerait les marqueurs, et supprimer la branche ne règle rien.