2011-06-23 10 views
64

Rebasing kodu w git, mam kilka konfliktów scalania. Rozwiązałem konflikty i dodałem "git add". W tym momencie zapomniałem zrobić "git rebase --continue". Kontynuowałem kodowanie i zrobiłem "zatwierdzenie git" dla zmian. Teraz jestem na "bez oddziału" i nie mogę teraz wykonać "git rebase --continue". Jak to naprawić?Nie pamiętam "git rebase --continue" i wykonałem polecenie "git commit". Jak naprawić?

+1

co oznacza "status git"? – hvgotcodes

+0

# Obecnie nie ma w oddziale. nic do zatwierdzenia (czysty katalog roboczy) – Abhilash

Odpowiedz

17

Musiałbym go wypróbować, ale myślę, że to jest to, co chciałbym zrobić:

  1. otagować ostatni commit (lub po prostu zapisywać swoje SHA1 gdzieś tak aby nie stracić go): git tag temp
  2. git rebase --abort
  3. Wykonaj ponowną bazę. Będziesz musiał ponownie rozwiązać scalenie. :(
  4. git rebase --continue
  5. git cherry-pick temp

Problem z tym jest to, że temp popełnić prawdopodobnie zawiera zarówno rozdzielczość scaleniu i nowy kod. Więc może to być trudne, ale chciałbym spróbować i sprawdzić, czy to działa.

+0

Albo możesz oznaczyć tagiem jak @MatrixFrog, albo możesz zapisać go jako łatę. Następnie przerwij bazę. Sprawdź status, aby upewnić się, że repozytorium znajduje się w stanie, o którym wiesz, że nie było żadnych problemów, a następnie uruchom pobieranie i rebase. – yasouser

+6

Nie rób tego. Zobacz odpowiedź kirikaza poniżej dla znacznie prostszego/czystszego sposobu. Nie zadzieraj z wyborem czereśni i rozwiązywania konfliktów po raz drugi. – tandrewnichols

+3

@Abhilash Proszę przyjąć odpowiedź kirikaza. Ja (podobnie jak tandrewnichols) zrobiłem to i było o wiele łatwiej (a internet wydaje się zgadzać, ponieważ ta odpowiedź ma 4 razy więcej głosów). –

125

Wystarczy zrobić git reset --soft HEAD^. to przesuwa wskaźnik HEAD do jego rodzica, ale zachowuje drzewo pracy i dodaje zmianę seryjnej do indeksu. tak więc można kontynuować przebazowania z git rebase --continue jak poprzednio.

+0

To całkowicie działało, a także po raz pierwszy znalazłem zastosowanie dla --soft. Miło wiedzieć, jak to działa, dzięki! – mmocny

+0

to jest niesamowite! –

+9

To poprawna odpowiedź faceci –