Całkowicie skompletowałem swój lokalny oddział i chciałbym zacząć od nowa. Wersja na serwerze jest poprawna.
Nie chcę zaczynać od nowa, chciałbym wykorzystać moją lokalną historię, aby naprawić mój wielki błąd. (Mogę, jeśli muszę.)
git fetch branchname
i git pull branchname
nie działa. Otrzymany komunikat jest „ aktualny ”, jednak moja lokalna wersja nie jest zgodna z wersją na serwerze.
git pull origin/branchname
wyświetla mi błąd „ nie znaleziono ”.
Odpowiedzi:
najpierw utwórz nowy oddział w bieżącej pozycji (na wypadek, gdybyś potrzebował swojej starej „schrzanionej” historii):
zaktualizuj listę zdalnych oddziałów i zsynchronizuj nowe zatwierdzenia:
następnie zresetuj swój oddział do punktu, w którym początek / gałąź wskazuje:
uważaj , to usunie wszelkie zmiany z twojego drzewa roboczego !
źródło
git fetch origin
przed zresetowaniemorigin/branch
. Nigdy.git reset
gdy GŁOWA wskazuje gałąź, ta gałąź podąży za nią.To, co robię, gdy psuję mój lokalny oddział, to po prostu zmieniam nazwę mojego zepsutego oddziału i ponownie sprawdzam / rozgałęziam gałąź upstream:
Następnie, jeśli jesteś pewien, że nie chcesz niczego ze swojej starej gałęzi, usuń ją:
Ale zwykle zostawiam starą gałąź lokalnie, na wypadek, gdyby coś tam było.
źródło
git checkout -b <branch> --track <remote>/<branch>
Czy twoje działa równie dobrze, bez--track
?branch.autoSetupMerge
(która, jak sądzę, domyślnie jest prawdziwa) tworzy--track
niejawne. I tak, we wszystkich moich konfiguracjach git nie muszę jawnie--track
robićcheckout -b
, ale YMMV.Twój lokalny oddział prawdopodobnie zawiera modyfikacje, które chcesz odrzucić. Aby to zrobić, musisz użyć,
git reset
aby zresetować głowicę gałęzi do ostatniego miejsca, w którym oddzieliłeś się od gałęzi repozytorium upstream. Użyj,git branch -v
aby znaleźć identyfikator sha1 gałęzi upstream i zresetuj swoją gałąź za pomocągit reset SHA1ID
. Wtedy powinieneś być w stanie wykonaćgit checkout
aby odrzucić zmiany, które pozostawił w twoim katalogu.Uwaga: zawsze rób to na kopii zapasowej repozytorium. W ten sposób możesz mieć pewność, że działało dobrze. A jeśli nie, masz kopię zapasową, do której możesz wrócić.
źródło
Ma to na celu przywrócenie wszystkich lokalnych zmian do głowy pochodzenia
źródło