2013-05-06 17 views
18

Sembra che io elimini un ramo su github quando non dovrei farlo.Come ripristinare un ramo su github?

Quello che ho fatto è stato il seguente:

1- aggiungo un nuovo Gitignore al mio sistema

2- Io uso

git rm -r --cached . 
git add . 
git commit -m ".gitignore is now working" 

Quando ho fatto questo, ho avuto un ramo sul mio sistema locale ma il server aveva due filiali.

Quindi ho spinto i miei rami sul server e poiché non avevo il secondo ramo, il secondo ramo è stato cancellato sul server.

Come posso riportarlo indietro?

Sto utilizzando Github come server remoto.

+0

come hai spinto i tuoi rami? – juanpastas

+0

@juanpastas: Sto usando git dall'interno di VS e ho usato git> push> push multiple branch e seleziono il ramo che non avevo sul mio repository locale – mans

+0

* push. Vedi http://stackoverflow.com/questions/1992364/git-recover-deleted-remote-branch – juanpastas

risposta

58

Se si conosce l'ultimo messaggio di commit del ramo cancellato si può fare questo:

git reflog 

# ricerca di un messaggio

fd0e4da [email protected]{14}: commit: This is the commit message I want 

# cassa revisione

git checkout fd0e4da 

o

git checkout [email protected]{14} 

# crea ramo

git branch my-recovered-branch 

ramo # spinta

git push origin my-recovered-branch:my-recovered-branch 
+1

Ma se non sai che messaggio di commit? – Alper

+0

cosa sai? – juanpastas

+0

Per rendere la ricerca git reflog un po 'più semplice: git reflog | grep 'Questo è il messaggio di commit che voglio' – jfountain

3

cosa succede se si git fetch remote && git checkout -b remote_branch_name

+1

Grazie, ma non funziona: $ git fetch remote fatale: 'remote' non sembra essere un repository git fatale: Impossibile leggere dal repository remoto. Assicurati di disporre dei diritti di accesso corretti e il repository esiste. – mans

+1

'remote' è il nome del repository remoto (GitHub in questo caso). prova 'git remote list' per vedere il nome del tuo repository remoto (penso che sia' origin') e usa quel nome al posto di 'remote' –

8

Se questo ramo è stato eliminato durante il Pull richiesta, è possibile annullare che proprio lì nella UI utilizzando il pulsante "ripristina ramo".

La parte difficile è in realtà trovare un PR che è stato unito e chiuso, è sufficiente conoscere l'URL o il numero di PR da inserire nell'URL. Puoi provare a cercare nelle e-mail di notifica cancellate o semplicemente indovinare il numero di PR.

Scrivere questa causa reflog non mi ha aiutato a ripristinare un commit di un compagno di squadra in un ramo che non ho mai inserito nel mio git locale.

+1

che mi ha salvato un sacco di dolore! :) – amohr

Problemi correlati