2010-10-18 25 views
6

Uruchomiłem git pull --rebase i przerwano to po naprawieniu kilku konfliktów scalających przy użyciu git rebase --abort.Git: przywracanie rozbieżnego repozytorium po nieudanym rebase

Przed próbą przebicia się, git status powiedział mi: "Twój oddział wyprzedza" origin/master "o 20 commitów." Teraz otrzymuję: "Twój oddział i" origin/master "rozdzieliły się i mają odpowiednio 15 i 5 różnych zatwierdzeń."

Wykonałem już reset najnowszego zatwierdzenia (git reset --hard c15...e30), ale komunikat o stanie jest wciąż taki sam.

Jak mogę przywrócić stan mojego repozytorium do stanu sprzed rozpoczęcia bałaganu? I jaka jest różnica między obecnym stanem a poprzednim?

Dzięki.

+1

Co oznacza raport o statusie Git jako bieżącej gałęzi (pierwszy wiersz wyniku)? Ponadto, dla odniesienia, jakie są odpowiednie skróty zatwierdzania dla pochodzenia/wzorca, Twojej gałęzi i miejsca, w którym teraz jesteś (na górze "dziennika git")? Użyj gitk --all, aby uzyskać lepszy obraz, jeśli go potrzebujesz. –

Odpowiedz

1

Urządzenie powinno zabrać Cię z powrotem do pierwotnego HEAD. Nie jestem pewien, co rozumiesz przez "naprawianie kilku konfliktów łączących za pomocą ... abort". Czy miałeś na myśli --continue?

W każdym razie, rzeczą do zrobienia jest teraz skonsultować się z reflog. Reflog to lokalny, tymczasowy dziennik zawierający wszystkie twoje referencje. Jeśli spojrzysz na .git/logs/HEAD, zobaczysz gdzie był HEAD (zestaw roboczy). Pod .git/logs/refs/... możesz zobaczyć, gdzie były wszystkie twoje gałęzie (lokalne i zdalne). Każda linia w dzienniku odzwierciedla pewne działanie. Początkowe SHA, zakończenie, użytkownik, czas i ciąg opisujące, jakie działanie spowodowało zmianę. Możesz znaleźć to, którego szukasz, i reset z powrotem do niego.