2012-01-17 4 views
21

Stavo provando qualcosa con un paio di rami, quindi ho riposizionato su un ramo temporaneo ed ero nel mezzo per risolvere alcuni conflitti quando ho deciso di non completa il rebase in un altro modo. Ho quindi cancellato il ramo temporaneo coinvolto e sono andato sulla mia strada allegra. Un paio d'ore più tardi ho voluto rebase un altro ramo e ottenere questo messaggio di erroregit rebase e rami di rebasing cancellati che causano il messaggio di errore "Rebase interattivo già avviato" messaggio di errore

Interactive rebase already started 

git rebase --abort visualizza questo messaggio di errore

error: unable to resolve reference refs/heads/tmp/rails3-rails-2-fixes: No such file or directory 
fatal: Cannot lock the ref 'refs/heads/tmp/rails3-rails-2-fixes'. 
Could not move back to refs/heads/tmp/rails3-rails-2-fixes 

cercato di creare solo un altro ramo chiamato tmp/rails3-rails-2-fixes ma niente da fare

Qualche idea su come posso risolvere questo?

risposta

18

Hm, questo è imbarazzante. Anche ricreare il ramo sarebbe stato il mio primo tentativo. In caso contrario, dovresti essere in grado di rimuovere la directory .git/rebase-merge, che contiene lo stato di rebase. (Spostalo di lato invece di essere al sicuro, se vuoi.) Una volta che è sparito, Git non dovrebbe avere alcun modo di sapere che c'era un rebase in corso. Dai un'occhiata alle tue filiali per assicurarti di non essere riuscito a perdere alcun commit nel processo, e sarai bravo!

+1

Che ha funzionato e finora non riesco a vedere nessun commit mancante, grazie mille mi hai salvato un sacco di problemi: D – tee

9

controllare il git status e vedere se non si verifica alcun ramo dopo l'ultimo rebase quindi non si è su qualsiasi ramo.

becase si trasferimento rebase in un'area non ramo, in modo da avere per annullare l'ultima rebase utilizzando git rebase --abort di comando e checkout un ramo di andare sul ramo e iniziare nuova rebasing

+0

Sono stato in grado di controllare altri rami da allora, che è uno dei motivi per cui non ho notato fino a quando ho cercato di ribattere un altro ramo – tee

+0

sì, è possibile effettuare il checkout del ramo in qualsiasi momento. ma questa è la funzionalità git, non ti avviserà quando effettui il checkout sulla ridefinizione. ma git avverte circa l'opzione continua e interrompi quando si verifica un conflitto – Dau

+0

Ho già git rebase --abort ma ho ricevuto il messaggio di errore sopra, altre eventuali soluzioni? – tee

1

Ho appena ricevuto un errore molto simile durante un tentativo di rebase che non ha fallito. Nessuno dei suggerimenti di cui sopra ha aiutato. Ecco quello che stavo vedendo:

$ git pull --rebase 
warning: refname 'xport1' is ambiguous. 
First, rewinding head to replay your work on top of it... 
Fast-forwarded xport1 to 98b787b0ea1f7f6771a5b1b56c7e8cc67b84c242. 
error: Ref refs/heads/xport1 is at 98b787b0ea1f7f6771a5b1b56c7e8cc67b84c242 but expected 3865d63ffb3a1a495363bfbd9ebb089e16152839 
fatal: Cannot lock the ref 'refs/heads/xport1'. 
Could not move back to refs/heads/xport1 

Si scopre che se un nome di riferimento è ambigua, il rebase fallirà, almeno su git versione 1.7.10.2 (Apple Git-33). Mi sono girato intorno e ho visto che avevo accidentalmente creato un tag con lo stesso nome del ramo su cui stavo cercando di rebase. L'eliminazione del tag ha eliminato questo errore.