Git annuler la tentative de fusion

88

J'ai le répertoire de travail (# 1) qui contient le répertoire du fournisseur (# 2). Il y a une dépendance que je voulais extraire manuellement sans composer (version php de npm / gem). Je travaillais dans le n ° 1, je n'ai pas enregistré / validé les modifications, lorsque j'ai décidé de mettre à jour la bibliothèque dans le n ° 2. J'ai navigué vers vendor / myname, et ai fait git pull repository.

Malheureusement, il a commencé à tirer et à fusionner vers le n ° 1, au lieu de créer un nouveau répertoire dans le dossier du fournisseur.

Maintenant j'ai:

  • Dossier n ° 1 avec mes modifications
  • Dossier n ° 1 avec des fichiers que je ne veux pas du mauvais référentiel
  • # 1 conflits de fusion tels que composer.json, Readme.md ... (fichiers généraux)

Je veux "annuler" ce dernier git pull sans perdre les modifications que j'ai apportées au dossier n ° 1. Comment puis-je faire ceci?

ewooycom
la source
Git empêche l'extraction ou la fusion s'il y a des changements non validés, êtes-vous sûr que c'est ce qui s'est passé?
CharlesB
1
@CharlesB Il a interrompu la fusion, les projets ne sont pas fusionnés par jet. Je ne sais rien sur git empêchant avant de tirer ...
ewooycom

Réponses:

168

git merge --abort pourrait être ce que vous recherchez.

Aragaer
la source
6
Dans les anciennes versions de git: git reset --merge
razz0
Cela fonctionne, mais ne vous dit rien. Faites un git statuspour confirmer.-
aliteralmind
17

Git moderne:

git merge --abort

Plus âgée:

git reset --merge

Old-school (avertissement: supprimera tous vos changements locaux):

git reset --hard

Mais en fait, il vaut la peine de noter que cela git merge --abortéquivaut uniquement à ce git reset --mergequi MERGE_HEADest présent. Cela peut être lu dans l'aide de git pour la commande de fusion.

git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.

Après un échec de fusion, quand il n'y en a pas MERGE_HEAD, la fusion échouée peut être annulée avec git reset --mergemais pas nécessairement avec git merge --abort, de sorte qu'il ne s'agit pas seulement d'une ancienne et d'une nouvelle syntaxe pour la même chose . Personnellement, je trouve git reset --mergebeaucoup plus utile dans le travail quotidien.

Martin G
la source
2

Avec Git 2.10 (Q3 2016), vous saurez quoi faire, car vous git statusproposerez l' git merge --abortoption.

Voir commit b0a61ab (21 juillet 2016) par Matthieu Moy ( moy) .
(Fusionné par Junio ​​C Hamano - gitster- in commit 5a2f4d3 , 03 août 2016)

status: suggérer ' git merge --abort' le cas échéant

Nous suggérons déjà ' git rebase --abort' lors d'un rebase en conflit.
De même, suggérez « git merge --abortpendant la résolution de conflit sur git merge».

VonC
la source