2013-05-06 13 views
18

Wygląda na to, że usunę gałąź na github, kiedy nie powinienem tego robić.Jak cofnąć usunięcie gałęzi na githubie?

Co zrobiłem było następujące:

1- dodać nowy .gitignore do mojego systemu

2- używam

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

Kiedy to zrobił, miałem jeden oddział w moim lokalnym systemie, ale serwer miał dwie gałęzie.

Następnie przekazałem moje gałęzie do serwera, a ponieważ nie miałem drugiego oddziału, druga gałąź została usunięta na serwerze.

Jak mogę go przywrócić?

Używam Github jako serwer zdalny.

+0

Jak przeforsowałeś swoje oddziały? – juanpastas

+0

@juanpastas: Używam git z wnętrza VS i użyłem git> push> push push wielu gałęzi i wybieram gałąź, której nie miałem w moim lokalnym repozytorium – mans

+0

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

Odpowiedz

58

Jeśli znasz ostatni commit wiadomość z usuniętej gałęzi można to zrobić:

git reflog 

# wyszukać wiadomości

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

rewizja # kasa

git checkout fd0e4da 

lub

git checkout [email protected]{14} 

# tworzyć Rozgałęzienie

git branch my-recovered-branch 

# Push oddział

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

Ale jeśli nie znasz tej wiadomości commit? – Alper

+0

co wiesz? – juanpastas

+0

Aby ułatwić przeszukiwanie pliku git: git reflog | grep "To jest wiadomość zatwierdzenia, którą chcę" – jfountain

3

co jeśli git fetch remote && git checkout -b remote_branch_name

+1

Dzięki, ale to nie działa: $ git fetch remote fatal: 'remote' nie wydaje się być repozytorium git fatal: Nie można odczytać z zdalnego repozytorium. Upewnij się, że masz prawidłowe prawa dostępu i istnieje repozytorium. – mans

+1

'remote' to nazwa zdalnego repo (w tym przypadku GitHub). spróbuj 'git remote list', aby zobaczyć nazwę zdalnego repo (myślę, że to' origin') i użyj tej nazwy zamiast 'remote' –

8

Jeśli ta gałąź została usunięta podczas Zamówienie Pull można cofnąć, że właśnie tam w interfejsie użytkownika za pomocą przycisk "przywróć gałąź".

Podstępna część polega na znalezieniu PR, który został scalony i zamknięty, wystarczy znać adres URL lub numer PR, aby umieścić go w adresie URL. Możesz spróbować wyszukać usunięte wiadomości e-mail z powiadomieniem lub po prostu zgadnąć numer PR.

Zapisanie tej przyczyny reflog nie pomogło mi przywrócić zobowiązania członka zespołu do oddziału, do którego nigdy nie wciągnąłem lokalnego gita.

+1

, który uratował mi wiele żalu! :) – amohr