Git stash pop- necesita fusionarse, no se puede actualizar el índice

116

No puedo sacar mi alijo porque fusioné una rama que aparentemente entra en conflicto con mi alijo y ahora mi alijo aparentemente no se puede abrir.

app.coffee: needs merge
unable to refresh index

¿Alguien sabe como resolver esto?

¡FIJO!

Resulta que el problema real fue un conflicto de fusión no resuelto de la fusión, NO que el alijo causaría un conflicto de fusión.

Resolución: confirme el archivo en conflicto.

RandallB
fuente
6
Es interesante que la respuesta aceptada es compleja, mientras que la solución real es bastante fácil: ni siquiera tiene que confirmar el archivo en conflicto, sino agregarlo.
Javi V
3
Agregue su respuesta como respuesta no en la pregunta.
Negro

Respuestas:

67

Primero, verifique git status.
Como menciona el OP,

El problema real era un conflicto de fusión no resuelto de la fusión, NO que el alijo causaría un conflicto de fusión.

Ahí es donde git statusmencionaría ese archivo como " both modified"

Resolución: confirme el archivo en conflicto.


Puede encontrar una situación similar hace 4 días al momento de escribir esta respuesta (13 de marzo de 2012) con esta publicación: " 'No es posible extraer porque tiene archivos no fusionados' ":

julita@yulys:~/GNOME/baobab/help/C$ git stash pop
help/C/scan-remote.page: needs merge
unable to refresh index

Lo que hiciste fue arreglar el conflicto de fusión (editar el archivo correcto y confirmarlo):
consulta " ¿Cómo soluciono los conflictos de fusión en Git? "

Lo que hizo el autor de la publicación del blog fue:

julita@yulys:~/GNOME/baobab/help/C$ git reset --hard origin/mallard-documentation
HEAD is now at ff2e1e2 Add more steps for optional information for scanning.

Es decir, abortar la fusión actual por completo, permitiendo git stash popque se aplique.
Consulte " Abortar una combinación en Git ".

Esas son tus dos opciones.

VonC
fuente
1
A veces también sucede que estamos en otra rama. Por ejemplo, tengo la rama A e hice algunos cambios y cambié a la rama B, hice cambios y los comprometí. Ahora quiero ir a la rama A pero olvidé pagar en A e intentar aplicar el alijo. En este caso, también da el mismo problema. Enfrenté este problema en el caso anterior.
Kapil Verma
Cometí todo, pero 'git bash pop' trae de vuelta esos conflictos. No veo por qué debería tener que comprometerme de todos modos cuando no quiero hacer cambios en el bach actual. Solo quiero volver a la rama escondida.
Philip Rego
@PhilipRego git bash pop? o git stash pop? Intente pagar el alijo en lugar de usar git alijo: stackoverflow.com/a/16625128/6309
VonC
Lo siento significaba 'git stash pop'. Ya dejé caer el alijo, pero lo intentaré la próxima vez que tenga este problema. Gracias
Philip Rego
14

Estaba teniendo este problema, luego resolví el conflicto y me comprometí, y hacerlo de git stash popnuevo fue restaurar el mismo alijo nuevamente (causando el mismo conflicto :-().

Lo que tenía que hacer (ADVERTENCIA: primero haga una copia de seguridad de su alijo) es git stash dropdeshacerme de él.

knocte
fuente
4
Eso acaba de deshacerse de mi alijo. Quería volver a eso.
Philip Rego
3
Esta es la respuesta que necesitaba, pero para otras personas que vean esto, perderán sus cambios escondidos. Esto es útil si tiene problemas con el primer alijo, pero realmente desea deshacerse del primer alijo para aplicar sus cambios más profundos en el segundo nivel.
Corey Schnedl
8

Es mucho más simple que la respuesta aceptada. Necesitas:

  1. Compruebe git statusy caminos no fusionados debajo de él. Arregle los conflictos. Puede omitir este paso si prefiere hacerlo más tarde.

  2. Agregue todos estos archivos en rutas no fusionadas para indexar usando git add <filename>.

  3. Ahora hazlo git stash pop. Si tiene algún conflicto, deberá resolverlo nuevamente.

ayushgp
fuente
6
Esto conduce al mismo conflicto una y otra vez.
NaN
7

Así es como resolví el problema:

  • git status (vea una combinación de archivos de un alijo anterior, extracción, almacenamiento emergente y trabajo continuo).
  • git stash (consulte el problema de fusión de necesidades)
  • git add. (agregue los archivos para que mi trabajo resuelva localmente el mío combinado)
  • git stash (sin error)
  • git pull (sin error)
  • git stash pop (sin error y sigue trabajando)
Adán
fuente
1
Gracias ! esto me ayuda.
Julien Baldy
1
Excelente, git add .sin comprometerme me soluciona el problema.
Paul Carlton
5

Si alguien tiene este problema fuera de una fusión / conflicto / acción, entonces podría ser el archivo de bloqueo git de su proyecto el que causa el problema.

git reset
     fatal: Unable to create '/PATH_TO_PROJECT/.git/index.lock': File exists.
rm -f /PATH_TO_PROJECT/.git/index.lock
git reset
git stash pop
StevieJayCee
fuente
1
Un poco temeroso del resetcomando. ¿Podría explicar por qué esto funcionará?
SMBiggs
1

Descubrí que la mejor solución es ramificar tu alijo y hacer una resolución después.

git stash branch <branch-name>

si deja de borrar su alijo, puede perder sus cambios y tendrá que volver al registro.

Julián Tellez
fuente
1

Necesita agregar app.coffeea la puesta en escena.

Hazlo git add app.coffeey luego podrás aplicar tu alijo (después de confirmar y presionar).

Edvard Munch
fuente
0

El alijo ya se ha aplicado a otros archivos.

Es solo app.coffeeque debes fusionar manualmente. Después solo corre

git reset

para deshacer los cambios y seguir pirateando.

Vinodagouda Patil
fuente
0

Estaba enfrentando el mismo problema porque hice algunos cambios en mi rama de desarrollo y luego quiero ir a la rama de perfil. así que he escondido los cambios por

git stash

luego, en la rama de perfil, también hice algunos cambios y luego quiero volver al desarrollo, así que tengo que esconder los cambios nuevamente por

 git stash

pero cuando llegué a desarrollar la rama y traté de obtener el alijo cambia por

git stash apply

así que estaba obteniendo un error, necesito fusionar

para resolver este problema primero tengo que comprobar la lista de alijo por

git stash list

por lo que muestra la lista de escondites en mi caso, había 2 escondites, el nombre de los escondites se muestra como este alijo @ {0}, escondite @ {1}

Necesito cambios de stash @ {1}, así que cuando trato de obtenerlo con este comando

git stash apply stash@{1}

así que el error se debe fusionar

así que ahora para resolver este problema, verifique el estado de sus archivos

git status

por lo que estaba dando un error que "ambos modificaron" para resolver esta ejecución

git add .

agregará los archivos modificados que faltan ahora nuevamente verifique el estado

git status 

así que ahora no hay ningún error, ahora puedo aplicar alijo

git stash apply stash@{1}

puede realizar este proceso para cualquier número de archivos de reserva.

Mudassir Khan
fuente