Introduction à la résolution des conflits de fusion dans GIT

La gestion des contributions pour résoudre les conflits entre plusieurs développeurs distribués est l'une des tâches principales des systèmes de contrôle de version. Pour résoudre les conflits de fusion, nous devons d'abord comprendre de quoi il s'agit exactement. Il survient lors de la fusion de différentes versions du même code et est géré par le système de contrôle de version, principalement lorsqu'un développeur supprime un fichier alors qu'un autre développeur le modifiait encore, ou lorsque plusieurs personnes tentent de modifier la même ligne dans un fichier. Dans cet article, nous allons en savoir plus sur les conflits de fusion Git, leurs causes et comment les résoudre.

Qu'est-ce qu'un conflit de fusion dans GIT?

Git a rendu la fusion très facile car il intègre automatiquement les nouvelles modifications à l'aide de la commande git merge. Mais en cas de conflits, seul le développeur qui fusionne est au courant du conflit, tandis que les autres l'ignorent. Ce que fait Git, c'est qu'il arrête le processus de fusion et marque le fichier comme ayant des conflits. Le développeur trouve et résout ensuite le conflit. Les conflits pendant la fusion peuvent se produire de la manière décrite ci-dessous:

  • Échec du démarrage de la fusion

En cas de modifications en attente dans le répertoire de travail du projet en cours, une fusion peut échouer car elles pourraient être écrasées par les validations lors de la fusion. Mais il peut être stabilisé en utilisant diverses commandes git comme git checkout / stash / reset / commit.

  • Échec lors de la fusion

S'il y a un échec lors de la fusion, cela indique qu'il y a un conflit entre la branche en cours de fusion et la branche actuelle. Bien que Git essaie de fusionner les fichiers sans conflits, mais s'il est incapable de le faire, il vous appartiendra de le résoudre manuellement.

Comment créer un conflit de fusion de fichiers?

Prenons un exemple pour afficher / résoudre les conflits de fusion dans GIT en utilisant l'interface de ligne de commande Git.

$ mkdir git-merge-test
$ cd git-merge-test
$ git init
$ echo "Mess with this content" > new_merged.txt
$ git add new_merged.txt
$ git commit -am"Committed the earlier content"
(master (root-commit) d58f73b) Committed the earlier content
1 file changed, 1 insertion(+)
create mode 200548 new_merged.txt

Voyons ligne par ligne ce qui se passe dans l'extrait de commande ci-dessus.

  • git-merge-test crée un nouveau répertoire et initialise un nouveau référentiel Git.
  • Ensuite, créez un fichier texte nommé new_merged.txt avec quelque chose écrit dessus.
  • Ajoutez le texte nouvellement créé au référentiel, puis validez-le.

Nous avons maintenant un nouveau référentiel avec une branche principale et un fichier new_merged.txt avec du contenu. Ensuite, nous créons une autre branche qui entrera en conflit avec la fusion.

$ git checkout -b newbranch
$ echo "New content" > new_merged.txt
$ git commit -am"Same named file is edited to cause a conflict"
(newbranch 6282319) Same named file is edited to cause a conflict
1 file changed, 1 insertion(+), 1 deletion(-)

Pour vous l'expliquer, les lignes ci-dessus:

  • crée et extrait une nouvelle branche nommée nouvelle branche.
  • écrase le contenu du fichier new_merged.txt.
  • et valide enfin le contenu nouvellement créé.

Avec la nouvelle branche nommée une branche, une validation est créée qui écrase le contenu dans new_merged.txt

$ git checkout master
Switched to branch 'master'
$ echo "Append" >> new_merged.txt
$ git commit -am"Content appended new_merged.txt"
(master 24fbe3c) Content appended new_merged.txt
1 file changed, 1 insertion(+)

La séquence de commandes ci-dessus non seulement extrait la branche principale, ajoute du contenu à new_merged.txt mais la valide également à la fin. Maintenant, notre exemple a 2 nouveaux commits. L'un est dans la branche principale et il y en a un autre dans la nouvelle branche. Maintenant, fusionnez la nouvelle branche pour voir ce qui se passe!

$ git merge newbranch
Auto-merging new_merged.txt
CONFLICT (content): Merge conflict in new_merged.txt
Automatic merge failed; fix conflicts and then commit the result.

Git nous montre que le conflit est apparu.

Résolution des conflits de fusion dans GIT

La modification du fichier en conflit est l'un des moyens de supprimer un conflit de fusion. Ouvrez simplement le fichier en conflit dans l'éditeur et supprimez les séparateurs de conflit un par un. Une fois édité, vous pouvez utiliser git add pour ajouter le contenu modifié. Un nouveau commit peut être créé en exécutant:

git commit -m "merged and resolved the conflict in "

Git assure la résolution du conflit et crée ainsi une nouvelle fusion engagée pour le finaliser. Certaines des commandes Git qui aident à résoudre les conflits de fusion sont:

git log --merge

La fusion –abort passée avec la commande git log produit une liste de validations en conflit entre les branches fusionnées.

git status

Il aide à identifier les fichiers en conflit.

git diff

Il aide à trouver des différences entre les états d'un référentiel ou d'un fichier. Il est utilisé pour prévoir et prévenir les conflits de fusion. Certains outils comme ceux donnés ci-dessous sont utilisés lors du démarrage d'un échec de fusion.

git reset --mixed

Il est utilisé pour annuler les modifications apportées au répertoire courant.

git checkout

Il est utilisé pour annuler les modifications apportées aux fichiers, ou plus fréquemment pour changer de branche. Certains outils comme ceux présentés ci-dessous sont utilisés lorsque des conflits surviennent lors d'une fusion.

git reset

Il est utilisé pour réinitialiser les fichiers en conflit pendant un conflit de fusion.

git merge --abort

Passer l'argument –abort avec git merge permet de quitter le processus de fusion et de ramener la branche à son état d'origine.

Avantages de la résolution des conflits de fusion Git

  • Il est utilisé pour créer, modifier, supprimer des branches, des fichiers ou des référentiels sans conflits.
  • Il peut être utilisé pour fusionner différentes versions du code.
  • Il permet également d'apporter des modifications et de vérifier les branches distantes tout en évitant simultanément les conflits.
  • Il permet de gérer et de gérer les versions sans conflits.
  • Maintient le référentiel et le processus propres et lisibles.

Conclusion

Git a de nombreuses utilisations et est largement utilisé par les développeurs, les chefs de produit et les scientifiques des données. Les commandes Git sont très efficaces et peuvent être très utiles. Un conflit dans git survient lorsque deux branches différentes essaient de modifier la même ligne dans un fichier, ou qu'un fichier est supprimé dans une branche particulière mais modifié dans une autre. Git gère la plupart des fusions avec succès avec ses fonctionnalités de fusion, mais il peut également être résolu manuellement à l'aide d'outils comme git status, git reset, git checkout et Git log.

Articles recommandés

Ceci est un guide pour résoudre les conflits de fusion dans GIT. Ici, nous discutons de la façon de résoudre efficacement les conflits de fusion Git avec diverses commandes ainsi que ses avantages. Vous pouvez également consulter nos autres articles suggérés pour en savoir plus -

  1. Git Alternatives avec des avantages
  2. Introduction aux outils Git
  3. GitHub vs SVN - Top différences
  4. Top 11 des questions d'entretien de GIT
  5. Git Push
  6. Versions de Tableau
  7. Guide complet de la commande à distance Git
  8. Trois étapes du cycle de vie de Git avec le Workflowe

Catégorie: