Détails
Je suis tombé sur un conflit de fusion. Comment puis-je interrompre la fusion ?
J'ai utilisé git pull
et j'ai eu un conflit de fusion :
unmerged: _widget.html.erb
You are in the middle of a conflicted merge.
Je sais que l'autre version du fichier est bonne et que la mienne est mauvaise, donc toutes mes modifications devraient être abandonnées. Comment puis-je faire cela ?
2374
3
Puisque votre
pull
a échoué, alorsHEAD
(et nonHEAD^
) est le dernier commit "valide" sur votre branche :L'autre élément que vous voulez est de laisser leurs changements écraser les vôtres.
Les anciennes versions de git vous permettaient d'utiliser la stratégie de fusion "theirs" :
Mais cela a été supprimé depuis, comme expliqué dans ce message de Junio Hamano (le mainteneur de Git). Comme indiqué dans le lien, vous devriez plutôt faire ceci :
Je pense que c'est de
git reset
dont vous avez besoin.Faites attention au fait que
git revert
signifie quelque chose de très différent de, disons,svn revert
- dans Subversion, le revert va supprimer vos modifications (non validées), renvoyant le fichier à la version actuelle du dépôt, alors quegit revert
"défait" une validation.git reset
devrait faire l'équivalent desvn revert
, c'est-à-dire, supprimer vos changements non désirés.Dans ce cas d'utilisation particulier, vous ne souhaitez pas vraiment interrompre la fusion, mais simplement résoudre le conflit d'une manière particulière.
Il n'y a pas non plus de besoin particulier de réinitialiser et d'effectuer une fusion avec une stratégie différente. Les conflits ont été correctement mis en évidence par git et l'obligation d'accepter les modifications de l'autre partie ne concerne que ce seul fichier.
Pour un fichier non fusionné dans un conflit, git rend disponible la base commune, les versions locales et distantes du fichier dans l'index. (C'est de là qu'elles sont lues pour être utilisées dans un outil de comparaison à trois voies par
git mergetool
). Vous pouvez utilisergit show
pour les visualiser.La façon la plus simple de résoudre le conflit pour utiliser la version distante mot pour mot est :
Ou, avec git >= 1.6.1 :