2012-05-24 47 views
14

Estoy tratando de hacer una combinación de squash de una rama de desarrollo en el maestro.deshacer la fusión de git después de merge.renameLimitar la advertencia más conflictos

stefanos-imac:trunk borini$ git merge --squash devel 
CONFLICT (content): Merge conflict in test1 
warning: inexact rename detection was skipped due to too many files. 
warning: you may want to set your merge.renamelimit variable to at least 2224 and retry the command. 
Squash commit -- not updating HEAD 
Automatic merge failed; fix conflicts and then commit the result. 

suficiente.

stefanos-imac:trunk borini$ git config merge.renameLimit 999999 

entonces intento de deshacer la fusión y rehacerla con el límite superior

stefanos-imac:trunk borini$ git merge --abort 
fatal: There is no merge to abort (MERGE_HEAD missing). 

Ok, así que tal vez tengo que hacer lo que dice y simplemente volver a invocar el comando de combinación

stefanos-imac:trunk borini$ git merge --squash devel 
fatal: 'merge' is not possible because you have unmerged files. 
Please, fix them up in the work tree, and then use 'git add/rm <file>' as 
appropriate to mark resolution and make a commit, or use 'git commit -a'. 

oh git, ¿por qué eres tan idiota?

Más al punto, ¿Alguien sabe cómo salir de esta situación?

Respuesta

23

Em, git reset --hard origin/master?

4

git merge --abort también harán el truco. Un poco más rápido que escribir el comando de reinicio de git completo.

Abort también funciona con rebase y cherry-pick.

+3

este caso particular indica claramente que merge --abort está fallando, lo que me he visto a mí mismo. Siempre es triste ver abortar el error :( – Brian

7

La forma moderna de deshacer una fusión es (pero esto sólo funciona cuando MERGE_HEAD está presente):

git merge --abort 

Y la manera un poco mayores, que trabajará en este caso (MERGE_HEAD falta):

git reset --merge 

La forma de la vieja escuela se describe en la respuesta aceptada (advertencia: descartará todos los cambios locales):

git reset --hard 

Tenga en cuenta que git merge --abort es solo equivalente a git reset --merge dado que MERGE_HEAD está presente. Esto se puede leer en la ayuda de git para el comando de fusión.

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

Después de una fusión fracasado, cuando no hay MERGE_HEAD, la fusión no se puede deshacer con git reset --merge pero no necesariamente con git merge --abort.

+1

git reset --merge, esto funciona para mí por la falta MERGE_HEAD descrita. –

Cuestiones relacionadas