Mój github ma teraz 100 zatwierdzeń. Muszę wycofać repozytorium, aby zatwierdzić 80, i usunąć wszystkie kolejne.
Dlaczego? To repo powinno być przeznaczone do łączenia różnych użytkowników. Wiązało się wiele połączeń, jak się ode mnie zgadza, z powodu nadmiernej edycji. Było to spowodowane błędnym oznakowaniem moich odległych gałęzi, w których 3 programistów zostało oznaczonych jako siebie nawzajem. Muszę zresetować do tego punktu, a następnie pociągnąć do przodu.
Chciałem dokonać zmiany bazy, jak w tym przykładzie: Jak mogę usunąć zatwierdzenie w GitHub?
Jednak git chce, żebym dużo zarządzał konfliktami. Czy istnieje prostszy sposób?
git push -f origin branch
. Po prostu miałem zły czas, ponieważ mi tego brakowało.git push origin HEAD --force
zamiast tego,git push -f origin branch
ponieważ dawał mi toerror: src refspec branch does not match any.
błądAby cofnąć ostatnie zatwierdzenie, robię to:
Pierwszy:
uzyskaj najnowszy identyfikator SHA do cofnięcia.
Spowoduje to utworzenie nowego zatwierdzenia, które działa dokładnie przeciwnie do zatwierdzenia. Następnie możesz wcisnąć ten nowy zatwierdzenie, aby doprowadzić aplikację do stanu, w jakim była wcześniej, a historia git odpowiednio pokaże te zmiany.
Jest to dobre w przypadku natychmiastowego ponownego wykonania czegoś, co właśnie popełniłeś, co moim zdaniem jest częstsze.
Jak wspomniał Mike, możesz również to zrobić:
źródło
git revert HEAD
cofnie ostatni zatwierdzenie bez konieczności sprawdzania skrótu.Inny sposób:
Przejdź do gałęzi, którą chcesz przywrócić, a następnie zresetuj lokalną kopię roboczą z powrotem do zatwierdzenia, które chcesz być najnowszym na zdalnym serwerze (wszystko po nim przejdzie do widzenia). Aby to zrobić, w SourceTree kliknąłem prawym przyciskiem myszy i wybrałem „Resetuj BRANCHNAME do tego zatwierdzenia”.
Następnie przejdź do lokalnego katalogu swojego repozytorium i uruchom następującą komendę:
Spowoduje to usunięcie wszystkich zatwierdzeń po bieżącym w lokalnym repozytorium, ale tylko dla tego jednego oddziału.
źródło
Większość sugestii zakłada, że musisz jakoś zniszczyć 20 ostatnich zatwierdzeń, dlatego oznacza to „przepisywanie historii”, ale nie musisz.
Po prostu utwórz nowy oddział z zatwierdzenia nr 80 i pracuj dalej nad tym oddziałem. Pozostałe 20 zobowiązań pozostanie na starej osieroconej gałęzi.
Jeśli absolutnie chcesz, aby nowy oddział miał tę samą nazwę, pamiętaj, że oddział to w zasadzie tylko etykiety. Po prostu zmień nazwę swojej starej gałęzi na inną, a następnie utwórz nową gałąź przy zatwierdzeniu nr 80 o żądanej nazwie.
źródło
Kiedy robię aktualizacje gałęzi od mastera, zauważam, że czasami klikam za dużo i powoduję, że gałąź również łączy się z master. Znalazłem sposób, aby to cofnąć.
Jeśli twoje ostatnie zatwierdzenie było fuzją, potrzeba trochę więcej miłości:
git revert -m 1 HEAD
źródło
W github najłatwiej jest usunąć zdalną gałąź w interfejsie użytkownika github, w zakładce gałęzie. Musisz upewnić się, że usuwasz następujące ustawienia, aby gałąź mogła zostać usunięta:
Teraz utwórz go ponownie w lokalnym repozytorium, aby wskazać poprzedni punkt zatwierdzenia. i dodaj go z powrotem do zdalnego repozytorium.
Następnie wypchnij oddział lokalny na zdalny
Dodaj z powrotem domyślną ochronę gałęzi i gałęzi itp.
źródło