No se puede "git stash pop" debido a un conflicto


19

Tengo un repositorio git local y tenía varios archivos modificados. Entonces necesitaba producir rápidamente una solución para algo, así que

  • escondí mis cambios (git stash)
  • archivo editado (archivo vi)
  • comprometido (git commit)
  • alijo reventado (git alijo pop)

Esto resultó en conflicto.

# On branch master
$ git stash pop
Auto-merging page/search.php
CONFLICT (content): Merge conflict in page/search.php
$ git status
# On branch master
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   both modified:      page/search.php

Si trato de limpiar los cambios y volver a aplicar el alijo, sucede lo mismo (conflicto). No me importa mucho la página / search.php, pero me gustaría sacar otros archivos del alijo.

¿Hay alguna forma de convertir el alijo en un parche o simplemente obtener los archivos como estaban cuando se escondieron?

Respuestas:


20

El alijo ya se ha aplicado a otros archivos; es solo page/search.phpque tienes que fusionar manualmente. Luego, simplemente corre git resetpara desestabilizar los cambios y seguir pirateando, o bien, git add ...y comete


Si. Exactamente. Después de recuperar el parche con -p, descubrí que otros archivos ya están actualizados.
romaninsh

3
muy bien, git stash popresuelve tus conflictos y git add xluego git resetsácalo de la puesta en escena, ¡Gracias!
Quang

@Quang Debería haber un stash pop --continuealias para reset. :)
Kaz

12

Resuelto con:

git stash show -p

Eso me salvó el día, =)
anatoly techtonik

¿Hace -palgo aquí?
Joost

2
¿espectáculo? -pag ? que hace esto ¿Cómo "show" podría estar relacionado para resolver conflictos?
Arnold Roa

2
Este comando muestra los cambios realizados en el alijo, lo que le permite fusionar manualmente
Desmond Weindorf

1
Lo encontré git stash show -p | git apply && git stash dropen coderwall.com/p/anxp0g/force-a-git-stash-pop , y estoy tratando de verificar que funcione antes de ejecutarlo. :-)
PatS

7

Después del git stash popcomando, debe resolver el conflicto a mano y luego hacerlo git stash dropmanualmente como lo man git-stashsugiere.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.