$ git checkout master
# remember where the master was referencing to
$ git branch previous_master
# Reset master back to origin/master
$ git reset --hard origin/master
zapisz cztery naciśnięcia klawiszy - nie potrzebujesz cudzysłowów. Po prostu: git checkout -B master origin / master
zumalifeguard
powiedzmy, że popełniłem 2 rzeczy, pierwsza to połączenie z gałęzią, a druga jest regularna. Co stanie się ze scaleniem, jeśli wrócę do źródła / wzorca?
utdev
1
nie musisz git fetch origin masterwcześniej, aby mieć pewność, że origin/masterjest aktualizowany?
pedrozath
Tak, oczywiście ze wszystkimi rozwiązaniami, które powinieneś zrobić git fetchnajpierw
KindDragon
29
Myślę, że nawet odpowiedź VonC ma złożoność w porównaniu z tą opcją:
@tworzony_framdzak, zapomniałem wziąć pod uwagę, że być może już sprawdziłeś wzorzec przed aktualizacją wzorca. Zaktualizowałem odpowiedź, aby była taka, która powinna działać również w tym przypadku.
Alexander Bird
Działa to nawet, jeśli nie jesteś na masterie (jak odłączony stan HEAD, który w rzeczywistości wskazuje na początek / master końcówki). Następnie możesz zrealizować transakcję master bez konieczności przerzucania starych plików przez repozytorium. Wspaniały!
Andrew Mao,
20
Jeśli jesteś już włączony master, możesz wykonać następujące czynności:
git reset --hard origin/master
Wskaże masteroddział lokalny na pilota origin/masteri odrzuci wszelkie modyfikacje działającego katalogu.
Odpowiedzi:
Jak KindDragon „s odpowiedź wspomina, można odtworzyć
master
bezpośrednioorigin/master
z:git checkout
Strona man wspomina:Jeśli
-B
podano,<new_branch>
jest tworzony, jeśli nie istnieje; w przeciwnym razie jest resetowany . Jest to transakcyjny odpowiednikPierwotnie sugerowane:
Coś jak:
przy czym krok 2 jest opcjonalny.
źródło
Git obsługuje to polecenie:
Sprawdź
origin/master
gałąź, a następnie zresetujmaster
tam gałąź.źródło
git fetch origin master
wcześniej, aby mieć pewność, żeorigin/master
jest aktualizowany?git fetch
najpierwMyślę, że nawet odpowiedź VonC ma złożoność w porównaniu z tą opcją:
git automatycznie rejestruje każdą wartość ref (poprzez reflog). Więc po uruchomieniu tej komendy
master@{1}
odnosi się do poprzedniej wartości master.Odpowiedź VonC jest poprawna, ale marnuje czas na sprawdzanie starej wartości master w systemie plików.
Jeśli zależy Ci na osieroconych obiektach w repozytorium, możesz uruchomić
git gc
źródło
Already on 'master'
Jeśli jesteś już włączony
master
, możesz wykonać następujące czynności:git reset --hard origin/master
Wskaże
master
oddział lokalny na pilotaorigin/master
i odrzuci wszelkie modyfikacje działającego katalogu.źródło
git checkout -B master origin/master
?