2012-11-22 10 views
5

Pracowałem nad moim lokalnym oddziałem, wykonując pewne zmiany, a kiedy skończyłem, pchnąłem wszystko do zdalnego bracha. Zanim połączyłem gałąź z rozwojem, pomyślałem, że powinienem zrobić rebase, ponieważ inni faceci połączyli tam wiele swoich kodów. Kiedy zrobiłem rebase i rozwiązałem kilka konfliktów, popchnąłem do odległej gałęzi. Niestety, sposób, w jaki rozwiązałem konflikty, był błędny, więc teraz muszę wrócić przed zmianą bazy danych i zaktualizować gałąź zdalną do nowego stanu.Git - Jak przywrócić bazę danych, która została przekazana do oddziału zdalnego (nie pochodzi)

Co próbowałem

  1. Wyczyść głowicę

    git zresetować --hard HEAD @ {x} // gdzie x jest głową tuż przed rebase

To działa i przywraca zmiany w moim lokalnym oddziale, ale wtedy nie wiem, co zrobić, aby aktualizacja oddziału zdalnego do tego, ponieważ nie tworzy nowego zatwierdzenia, które można pchnąć t o pilota.

+2

użyj flagi "-f" za pomocą polecenia push. –

Odpowiedz

4

Nie należy przepisać historię zdalnych repozytoriów, ponieważ jeśli

  1. Naciskasz coś złamane
  2. Ktoś ciągnie
  3. wymusić-Push inną historię

nie tylko ty mam problem z naprawieniem bałaganu, ale wszyscy, którzy wycofali zmiany. Więc jeśli nie możesz być pewny, że nikt go nie wyciągnął, , nie rób nacisku na siłę.

Zamiast tego należy przywrócić popełnić stosując albo

>> git revert [email protected]{y} # where [email protected]{y} is the faulty commit 

jeśli tylko jeden commit był brudny, w przypadku scalania.

W przypadku rebase że transplatend kilka zobowiązuje na oddział mistrza trzeba zrobić

>> git revert --no-commit HEAD 
>> git revert --no-commit HEAD~1 
>> git revert --no-commit HEAD~2 
    ... 
>> git revert --no-commit [email protected]{x} 
>> git commit -m "Sorry folks for the big mess I made" 

gdzie wszystkie HEAD~y są rewizje w między [email protected]{x} i HEAD.

Spowoduje to skuteczne cofnięcie wszystkich zatwierdzonych zatwierdzeń w jednym dużym zatwierdzeniu.

+0

Dzięki temu działało to jak czar! Poza tym miałeś rację, nie powinienem zmuszać się do ciągnięcia. – user1844566