Wie kann ich 'Master' auf 'Ursprung/Master' zurücksetzen?
Kann ich die folgenden Schritte auf einfachere Weise durchführen?
git checkout origin/master
git branch -D master
git branch master
git checkout master
Kann ich die folgenden Schritte auf einfachere Weise durchführen?
git checkout origin/master
git branch -D master
git branch master
git checkout master
Wie KindDragon Antwort erwähnt, können Sie master
direkt bei origin/master
neu erstellen mit:
git checkout -B master origin/master
Die git checkout
man page erwähnt:
Wenn -B
angegeben wird, wird <new_branch>
erstellt, wenn es nicht existiert; andernfalls wird es zurückgesetzt. Dies ist das transaktionale Äquivalent von
$ git branch -f <branch> [<start point>]
$ git checkout <branch>
seit Git 2. 23+ (August 2019), da git checkout
zu verwirrend ist , lautet der neue (noch experimentelle) Befehl * git switch
**:
git switch -C master origin/master
Das heißt:
-C <new-branch> --force-create <new-branch>
Ähnlich wie
--create
, außer dass, wenn<new-branch>
bereits existiert, es auf<start-point>
zurückgesetzt wird.
Dies ist eine praktische Abkürzung für:$ git branch -f <new-branch> $ git switch <new-branch>
Ursprünglich vorgeschlagen:
Etwas wie:
$ 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
, wobei Schritt 2 optional ist.
Git unterstützt diesen Befehl:
git checkout -B master origin/master
Check out the origin/master
branch and then reset master
branch there.
Ich denke, sogar die Antwort von VonC ist im Vergleich zu dieser Option komplex:
git update-ref refs/heads/master origin/master
git reset --hard master
git protokolliert automatisch jeden Wert eines Refs (durch den Reflog). Nachdem Sie also diesen Befehl ausgeführt haben, bezieht sich master@{1}
auf den vorherigen Wert von master.
VonCs Antwort ist korrekt, aber es verschwendet Zeit, den alten Wert von master in das Dateisystem auszuchecken.
Wenn Sie sich um verwaiste Objekte im Repo kümmern, dann können Sie git gc
ausführen