2014-06-09 14 views
40

Sto provando ad applicare una patch, che ho preso da http://www.winehq.org/pipermail/wine-devel/2014-May/104356.html. L'ho copiato in un editor di testo e l'ho salvato come my.patch (avevo bisogno di correggere l'email, era stato offuscato).Errore Git: la directory precedente di rebase .git/rebase-apply esiste ancora ma mbox data

ho cercato di applicare con Git, ma sto ottenendo questo errore:

[email protected]:~/Desktop/wine-git$ git am --signoff <my.patch 
previous rebase directory /home/sashoalm/Desktop/wine-git/.git/rebase-apply still exists but mbox given. 

Questo messaggio di errore criptico mi dà alcuna idea di ciò che è sbagliato o che cosa devo fare per farlo funzionare. Cosa significa questo errore? E come lo aggiusto?

risposta

31

Ok, è risultato che avevo bisogno di cancellare la directory .git/rebase-apply. Funziona dopo (o almeno mi dà errori diversi, dicendo che l'email è di nuovo sbagliata). Non ho ancora idea di cosa significhi realmente l'errore o perché c'è stato un errore.

Modifica: Come suggerito nei commenti di seguito, git rebase --abort potrebbe essere un modo migliore per risolvere il problema, ma non l'ho provato.

+1

L'errore indica che a un certo punto è stato eseguito un 'git rebase' che si è interrotto a causa di un conflitto e stava aspettando il completamento di alcune azioni e il completamento di' git rebase --continue'. Il modo corretto per risolvere tale situazione è: a) risolvere ciò che 'git rebase' stava avendo problemi con e quindi' git rebase --continue', o b) 'git rebase --abort'. Il tuo repository può o non può essere confuso ora. Leggi 'git help rebase' per maggiori informazioni. – twalberg

+0

Il "rebase" era causato da 'git apply' o' git am'. Dopo aver fallito (a causa dell'email errata), hanno creato questa directory. Non avevo motivo di pensare che git consideri l'applicazione di una patch per essere in realtà un rebase. – sashoalm

+8

+1 per suggerire 'git rebase --abort' che avrebbe risolto i miei problemi. Se il problema è stato causato da una unione errata, 'git am --abort' potrebbe essere la soluzione giusta. –

26
git am --abort 

ha funzionato per me, ma git rebase --abort no.

Cosa è successo: ho cercato di applicare una patch, ma era stato corrotto (probabilmente da Gmail copy pasting in body):

git am bad.patch 

E Git detto:

Applying: python: fix Linetable case to LineTable in docstrings and comments 
fatal: corrupt patch at line 56 
Patch failed at 0001 python: fix Linetable case to LineTable in docstrings and comments 
The copy of the patch that failed is found in: 
    /home/ciro/git/binutils-gdb/src/.git/rebase-apply/patch 
When you have resolved this problem, run "git am --continue". 
If you prefer to skip this patch, run "git am --skip" instead. 
To restore the original branch and stop patching, run "git am --abort". 

Si noti come git dà la soluzione: To restore the original branch and stop patching, run "git am --abort".

Quindi ovviamente ho ignorato il messaggio e ho provato immediatamente una versione fissa:

git am good.patch 

e ha ottenuto l'errore.