Git stash pop- richiede l'unione, impossibile aggiornare l'indice


116

Non posso aprire la mia scorta perché ho unito un ramo che apparentemente è in conflitto con la mia scorta e ora la mia scorta sembra non essere in grado di essere estratta.

app.coffee: needs merge
unable to refresh index

Qualcuno sa come risolvere questo problema?

FISSO!

Si scopre che il problema effettivo era un conflitto di unione irrisolto dall'unione, NON che lo stash avrebbe causato un conflitto di unione.

Soluzione: salva il file in conflitto.


6
È interessante notare che la risposta accettata è complessa mentre la soluzione effettiva è abbastanza semplice: non è nemmeno necessario eseguire il commit del file in conflitto, ma aggiungerlo.
Javi V

3
Aggiungi la tua risposta come risposta non nella domanda.
Black

Risposte:


67

Per prima cosa, controlla git status.
Come menzionato dal PO,

Il problema effettivo era un conflitto di unione irrisolto dall'unione, NON che lo stash avrebbe causato un conflitto di unione.

È qui che viene git statusmenzionato il file come " both modified"

Soluzione: salva il file in conflitto.


Puoi trovare una situazione simile 4 giorni fa al momento della stesura di questa risposta (13 marzo 2012) con questo post: " 'Il pull non è possibile perché hai file non uniti' ":

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

Quello che hai fatto è stato risolvere il conflitto di unione (modificando il file corretto e confermandolo):
vedi " Come posso risolvere i conflitti di unione in Git? "

Quello che ha fatto l'autore del post sul blog è stato:

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.

Cioè abortire completamente la fusione corrente, consentendo l' git stash popapplicazione di.
Vedere " Interruzione di un'unione in Git ".

Queste sono le tue due opzioni.


1
A volte capita anche di essere in un altro ramo. Ad esempio, ho il ramo A e ho apportato alcune modifiche e sono passato al ramo B, apportato modifiche e commit. Ora voglio andare al ramo A ma ho dimenticato di fare il checkout su A e provare ad applicare lo stash. Anche in questo caso dà lo stesso problema. Ho affrontato questo problema nel caso precedente.
Kapil Verma

Ho commesso tutto ma "git bash pop" riporta quei conflitti. Non vedo perché dovrei comunque impegnarmi quando non voglio apportare modifiche all'attuale bach. Voglio solo tornare al ramo nascosto.
Philip Rego

@PhilipRego git bash pop? o git stash pop? Provare a fare cassa la scorta invece di utilizzare scorta git: stackoverflow.com/a/16625128/6309
VonC

Scusa significava "git stash pop". Ho già lasciato cadere la scorta, ma lo proverò la prossima volta che avrò questo problema. Grazie
Philip Rego

14

Stavo avendo questo problema, quindi risolvendo il conflitto, impegnandomi e facendo git stash pop nuovo è stato ripristinare di nuovo la stessa scorta (causando lo stesso conflitto :-().

Quello che dovevo fare (ATTENZIONE: eseguire prima il backup della tua scorta) è git stash dropsbarazzarmene.


4
Si è appena sbarazzato della mia scorta. Volevo tornarci.
Philip Rego

3
Questa è la risposta di cui avevo bisogno, ma per le altre persone che lo vedono, perderai le tue modifiche nascoste. Questo è utile se hai problemi con la prima scorta, ma vuoi davvero sbarazzarti della prima scorta per applicare le modifiche più profonde di secondo livello.
Corey Schnedl

8

È molto più semplice della risposta accettata. Devi:

  1. Controllare git statuse percorsi non uniti sotto di esso. Risolvi i conflitti. Puoi saltare questo passaggio se preferisci farlo in seguito.

  2. Aggiungi tutti questi file sotto percorsi non uniti per indicizzare usando git add <filename>.

  3. Adesso fallo git stash pop. Se si verificano conflitti, questi dovranno essere nuovamente risolti.


6
Questo porta allo stesso conflitto ancora e ancora.
NaN

7

Ecco come ho risolto il problema:

  • git status (vedi un mix di file da un precedente stash, pull, stash pop e lavoro continuato.)
  • git stash (vedi il problema di unione dei bisogni)
  • git add. (aggiungi i file in modo che il mio lavoro risolva localmente il mio unito)
  • git stash (nessun errore)
  • git pull (nessun errore)
  • git stash pop (nessun errore e continua a lavorare)

1
Grazie ! questo mi aiuta.
Julien Baldy

1
Eccellente, git add .senza impegno risolve il problema per me.
Paul Carlton

5

Se qualcuno sta riscontrando questo problema al di fuori di una fusione / conflitto / azione, potrebbe essere il file git lock per il tuo progetto a causare il 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

1
Un po 'paura del resetcomando. Potresti spiegare perché funzionerà?
SMBiggs

1

Ho scoperto che la soluzione migliore è diramare la tua scorta e fare una risoluzione in seguito.

git stash branch <branch-name>

se elimini la tua scorta, potresti perdere le modifiche e dovrai tornare al reflog.


1

Devi aggiungere app.coffeealla messa in scena.

Fai git add app.coffeee poi sarai in grado di applicare la tua scorta (dopo quel commit e push).


0

Lo stash è già stato applicato ad altri file.

È solo app.coffeeche devi unire manualmente. Successivamente corri

git reset

per rimuovere le modifiche e continuare ad hackerare.


0

Stavo affrontando lo stesso problema perché ho apportato alcune modifiche al mio ramo di sviluppo e poi voglio andare al ramo del profilo. quindi devo mettere da parte le modifiche

git stash

poi nel ramo del profilo ho anche fatto alcune modifiche e poi voglio tornare di nuovo allo sviluppo quindi devo mettere di nuovo le modifiche da parte

 git stash

ma quando vengo a sviluppare branch e ho provato a git le modifiche allo stash

git stash apply

quindi stavo ottenendo l' errore necessario unire

per risolvere questo problema prima devo controllare l'elenco delle scorte di

git stash list

quindi mostra l'elenco delle scorte nel mio caso c'erano 2 scorte il nome delle scorte viene visualizzato come questo stash @ {0}, stash @ {1}

Ho bisogno di modifiche da stash @ {1} quindi quando provo a ottenerle con questo comando

git stash apply stash@{1}

quindi stava ottenendo l' errore ha bisogno di unire

quindi ora per risolvere questo problema controlla lo stato dei tuoi file

git status

quindi stava dando l'errore che "entrambi modificati" in modo da risolvere questa corsa

git add .

aggiungerà i file modificati mancanti ora controlla di nuovo lo stato

git status 

quindi ora non ci sono errori ora puoi applicare stash

git stash apply stash@{1}

puoi eseguire questo processo per qualsiasi numero di file stash.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.