Créer le conflit
Exécutez cet exercice Bash dans un nouveau dossier vide. Les noms des branches et du fichier sont réservés à cet exemple.
git init -b main
git config user.name "DevSheet Demo"
git config user.email "demo@example.invalid"
printf "colour=blue\n" > settings.txt
git add settings.txt
git commit -m "Base colour"
git switch -c feature
printf "colour=green\n" > settings.txt
git commit -am "Feature colour"
git switch main
printf "colour=red\n" > settings.txt
git commit -am "Main colour"
git merge featureLa dernière commande doit s’arrêter sur un conflit dans settings.txt. Son code de sortie non nul est attendu.
Lire les deux versions
git status --short
git diff -- settings.txtCherchez UU settings.txt. Dans le fichier, <<<<<<< HEAD introduit la version de la branche courante, ======= sépare les versions et >>>>>>> feature termine la version entrante. Ces repères concernent une fusion normale ; le contexte d’un rebase diffère.
Écrire et vérifier le résultat final
Pour cet exercice, choisissez le vert. Remplacez tout le fichier en conflit, ajoutez uniquement ce fichier à l’index et vérifiez le diff.
printf "colour=green\n" > settings.txt
git add settings.txt
git diff --cached
git merge --continue
git status --shortEnregistrez le message lorsque l’éditeur s’ouvre. Résultat attendu : un statut propre et un commit de fusion. Dans un projet réel, combinez les modifications selon le comportement voulu et lancez les vérifications pertinentes avant de terminer.
Annuler ou vérifier une fusion bloquée
Pendant un conflit non résolu, git merge --abort tente de revenir à l’état précédent. Committez ou mettez de côté le travail indépendant avant de lancer une fusion : abort peut échouer à reconstituer des modifications préexistantes.
Ajouter un fichier à l’index signale que le conflit est résolu, même si des marqueurs restent dedans. Relisez le diff. Fichiers binaires, suppressions/modifications et renommages nécessitent leurs propres décisions.