Git stash pop- precisa mesclar, não é possível atualizar o índice

116

Não posso abrir meu estoque porque fundi um branch que aparentemente está em conflito com meu estoque e agora meu estoque parece incapaz de ser aberto.

app.coffee: needs merge
unable to refresh index

Alguém sabe como resolver isso?

FIXO!

Acontece que o problema real era um conflito de mesclagem não resolvido da mesclagem, NÃO que o stash causaria um conflito de mesclagem.

Resolução: confirme o arquivo em conflito.

RandallB
fonte
6
É interessante que a resposta aceita é complexa, enquanto a solução real é bastante fácil: você não precisa nem enviar o arquivo em conflito, mas adicioná-lo.
Javi V
3
Adicione sua resposta como uma resposta que não está na pergunta.
Negro

Respostas:

67

Primeiro, verifique git status.
Como o OP menciona,

O problema real era um conflito de mesclagem não resolvido da mesclagem, NÃO que o stash causaria um conflito de mesclagem.

É aí git statusque mencionaria esse arquivo como sendo " both modified"

Resolução: confirme o arquivo em conflito.


Você pode encontrar uma situação semelhante 4 dias atrás, no momento em que escrevia esta resposta (13 de março de 2012) com esta postagem: " 'Pull não é possível porque você tem arquivos não unidos' ":

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

O que você fez foi corrigir o conflito de mesclagem (editando o arquivo correto e submetendo-o):
Veja " Como faço para corrigir conflitos de mesclagem no Git? "

O que o autor da postagem do blog fez foi:

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.

Ou seja, abortando completamente a fusão atual, permitindo que o git stash popseja aplicado.
Veja " Abortando uma fusão no Git ".

Essas são suas duas opções.

VonC
fonte
1
Às vezes também acontece que estamos em outro ramo. Por exemplo, eu tenho o branch A e fiz algumas alterações e mudei para o branch B, fiz alterações e as confirmei. Agora eu quero ir para o branch A, mas esqueci de fazer o checkout no A e de tentar aplicar o stash. Nesse caso, também dá o mesmo problema. Eu enfrentei esse problema no caso acima.
Kapil Verma
Eu cometi tudo, mas 'git bash pop' traz de volta esses conflitos. Não vejo por que deveria ter que me comprometer de qualquer maneira, quando não quero fazer alterações no bach atual. Eu só quero voltar para o galho escondido.
Philip Rego
@PhilipRego git bash pop? ou git stash pop? Tente verificar o stash em vez de usar git stash: stackoverflow.com/a/16625128/6309
VonC
Desculpe significava 'git stash pop'. Já deixei cair o estoque, mas tentarei na próxima vez que tiver esse problema. Obrigado
Philip Rego
14

Eu estava tendo esse problema, então resolvendo o conflito e cometendo, e fazendo de git stash popnovo estava restaurando o mesmo estoque novamente (causando o mesmo conflito :-().

O que eu tive que fazer (AVISO: faça backup do seu estoque primeiro) é git stash dropme livrar dele.

knocte
fonte
4
Isso acabou com o meu estoque. Eu queria voltar a isso.
Philip Rego
3
Esta é a resposta que eu precisava, mas para outras pessoas que virem isso, você perderá suas alterações armazenadas. Isso é útil se você estiver tendo problemas com o primeiro stash, mas realmente deseja se livrar do primeiro stash para aplicar as alterações mais profundas do segundo nível.
Corey Schnedl
8

É muito mais simples do que a resposta aceita. Você precisa:

  1. Verifique git statuse os caminhos não mesclados sob ele. Corrija os conflitos. Você pode pular esta etapa se preferir fazer isso mais tarde.

  2. Adicione todos esses arquivos em caminhos não mesclados para indexar usando git add <filename>.

  3. Agora faça git stash pop. Se você tiver algum conflito, ele precisará ser resolvido novamente.

Ayushgp
fonte
6
Isso leva ao mesmo conflito repetidamente.
NaN
7

Veja como resolvi o problema:

  • status git (veja uma mistura de arquivos de um stash anterior, pull, stash pop e trabalho contínuo.)
  • git stash (veja o problema de mesclagem de necessidades)
  • git add. (adicione os arquivos para que meu trabalho resolva localmente minha própria mesclagem)
  • git stash (sem erro)
  • git pull (sem erro)
  • git stash pop (sem erros e continue trabalhando)
Adão
fonte
1
THX ! isso me ajuda.
Julien Baldy
1
Excelente, git add .sem cometer corrige o problema para mim.
Paul Carlton
5

Se alguém estiver tendo esse problema fora de uma fusão / conflito / ação, pode ser o arquivo git lock do seu projeto que está causando o 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
fonte
1
Meio com medo do resetcomando. Você poderia explicar por que isso vai funcionar?
SMBiggs
1

Eu descobri que a melhor solução é ramificar seu estoque e fazer uma resolução depois.

git stash branch <branch-name>

se você deixar de limpar seu estoque, poderá perder suas alterações e terá que recorrer ao reflog.

Julian Tellez
fonte
1

Você precisa adicionar app.coffeeà encenação.

Faça git add app.coffeee então você poderá aplicar seu stash (depois daquele commit e push).

Edvard Munch
fonte
0

O stash já foi aplicado a outros arquivos.

Você só app.coffeeprecisa mesclar manualmente. Depois é só correr

git reset

para desviar as mudanças e continuar hackeando.

Vinodagouda Patil
fonte
0

Eu estava enfrentando o mesmo problema porque fiz algumas alterações no meu branch de desenvolvimento e depois quero ir para o branch de perfil. então eu escondi as mudanças por

git stash

então, no branch de perfil, eu também fiz algumas mudanças e quero voltar ao desenvolvimento, então tenho que esconder as mudanças novamente até

 git stash

mas quando eu vim para desenvolver o branch e tentei obter as alterações do stash por

git stash apply

então eu estava recebendo um erro, preciso mesclar

para resolver este problema, primeiro eu tenho que verificar a lista de estoque por

git stash list

então mostra a lista de stashes no meu caso havia 2 stashes que o nome dos stashes estão exibindo assim stash @ {0}, stash @ {1}

Preciso de mudanças de stash @ {1} então, quando tento obtê-lo com este comando

git stash apply stash@{1}

então estava ficando erro precisa ser mesclado

agora, para resolver este problema, verifique o status de seus arquivos

git status

por isso estava dando erro que "ambos modificaram" so para resolver esse run

git add .

irá adicionar os arquivos modificados ausentes agora verifique novamente o status

git status 

então agora não há erro agora pode aplicar stash

git stash apply stash@{1}

você pode fazer este processo para qualquer número de arquivos stash.

Mudassir Khan
fonte