Tester les fichiers sans conflit
Dans les étapes précédentes, nous avons identifié et examiné un fichier avec un conflit de fusion (merge conflict) (message.txt
). Cependant, lors d'une fusion (merge), il peut également y avoir des fichiers qui ont été modifiés dans les deux branches mais sans conflit. Git fusionne automatiquement ces fichiers.
Dans cette étape, nous allons créer un nouveau fichier dans l'une des branches et voir comment Git le gère lors du processus de fusion. Cela nous aidera à comprendre que les conflits ne se produisent que lorsque les modifications se chevauchent dans le même fichier.
Assurez-vous que vous êtes toujours dans le répertoire ~/project/my-time-machine
et sur la branche master
(où le conflit de fusion s'est produit).
Créons un nouveau fichier appelé notes.txt
dans la branche master
:
echo "Important notes for the project." > notes.txt
git add notes.txt
git commit -m "Add project notes"
Maintenant, revenons à la branche feature/greeting
:
git checkout feature/greeting
Dans cette branche, le fichier notes.txt
n'existe pas encore. Créons un fichier différent ici, par exemple, todo.txt
:
echo "Things to do: finish the lab." > todo.txt
git add todo.txt
git commit -m "Add a todo list"
Maintenant, revenons à la branche master
et tentons la fusion à nouveau. Même si nous avons déjà résolu le conflit dans message.txt
, le processus de fusion doit être terminé.
git checkout master
git merge feature/greeting
Cette fois-ci, puisque nous avons déjà résolu le conflit dans message.txt
et l'avons ajouté à la zone de préparation (staging area) (bien que nous n'ayons pas explicitement montré cette étape après l'édition, Git met souvent le fichier en attente après la résolution manuelle du conflit), Git devrait être en mesure de terminer la fusion. Vous pourriez voir un message indiquant que la fusion est terminée.
Vérifions à nouveau l'état (status) :
git status
La sortie devrait maintenant indiquer que vous êtes "On branch master" et que l'arbre de travail (working tree) est propre, ce qui signifie qu'il n'y a pas de modifications en attente ou de chemins non fusionnés.
On branch master
nothing to commit, working tree clean
Maintenant, vérifions si les fichiers des deux branches sont présents dans la branche master
:
ls
Vous devriez voir à la fois message.txt
, notes.txt
(de la branche master
) et todo.txt
(de la branche feature/greeting
) répertoriés.
message.txt notes.txt todo.txt
Cela démontre que Git a réussi à fusionner les modifications de feature/greeting
, y compris le nouveau fichier todo.txt
, sans aucun conflit car todo.txt
n'existait pas dans la branche master
. Les conflits ne se produisent que lorsque le même fichier a des modifications chevaucheantes dans les branches en cours de fusion.
Comprendre comment Git gère à la fois les fichiers conflictuels et non conflictuels lors d'une fusion est essentiel pour gérer efficacement l'historique de votre projet.