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.
- Notions
- Questions
- Ranger et relier
- Mises en situation
- 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<<<<<<< HEADet=======?
```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 mainpour quitter la fusiongit commit -am "conflit"pour reprendre plus tardgit branch -d menupour supprimer la branche fautivegit merge --abort
Voir la réponse
git merge --abortgit merge --abortannule la fusion sans rien perdre.git switchest refusé pendant une fusion (« cannot switch branch while merging »), commiter enregistrerait les marqueurs, et supprimer la branche ne règle rien.