Jak zresetować 'master' na 'origin/master'?
Czy mogę wykonać następujące czynności w prostszy sposób?
git checkout origin/master
git branch -D master
git branch master
git checkout master
Czy mogę wykonać następujące czynności w prostszy sposób?
git checkout origin/master
git branch -D master
git branch master
git checkout master
Jak wspomina KindDragon ’s odpowiedź , możesz odtworzyć master
bezpośrednio w origin/master
za pomocą:
git checkout -B master origin/master
The git checkout
man page mentions:
If -B
is given, <new_branch>
is created if it doesn’t exist; otherwise, it is reset. Jest to ekwiwalent transakcyjny
$ git branch -f <branch> [<start point>]
$ git checkout <branch>
Od Git 2. 23+ (sierpień 2019), ponieważ git checkout
jest zbyt mylące , nowa (wciąż eksperymentalna) komenda to * git switch
**:
git switch -C master origin/master
To jest:
-C <new-branch> --force-create <new-branch>
Podobna do
--create
, z wyjątkiem tego, że jeśli<new-branch>
już istnieje, zostanie zresetowany do<start-point>
.
This is a convenient shortcut for:$ git branch -f <new-branch> $ git switch <new-branch>
Originally suggested:
Something like:
$ 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
with step 2 being optional.
Git obsługuje to polecenie:
git checkout -B master origin/master
Sprawdź oddział origin/master
, a następnie zresetuj tam oddział master
.
Myślę, że nawet odpowiedź VonC ma złożoność w porównaniu do tej opcji:
git update-ref refs/heads/master origin/master
git reset --hard master
git automatycznie rejestruje każdą wartość ref (poprzez reflog). Tak więc po uruchomieniu tej komendy, wtedy master@{1}
odnosi się do poprzedniej wartości ref.
Odpowiedź VonC jest poprawna, ale marnuje czas na wymeldowanie starej wartości master do systemu plików.
Jeśli zależy Ci na osieroconych obiektach w repo, wtedy możesz uruchomić git gc