2011-04-20 10:34:06 +0000 2011-04-20 10:34:06 +0000
235
235

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

Antworten (4)

343
343
343
2011-04-20 11:22:10 +0000

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.

102
102
102
2014-08-24 19:30:10 +0000

Git unterstützt diesen Befehl:

git checkout -B master origin/master

Check out the origin/master branch and then reset master branch there.

30
30
30
2013-01-23 20:48:07 +0000

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

22
22
22
2014-06-25 15:47:13 +0000

Wenn Sie sich bereits auf master befinden, können Sie folgendes tun:

git reset --hard origin/master

Es wird die lokale Verzweigung master auf die entfernte origin/master verweisen und alle Änderungen im Arbeitsverzeichnis verwerfen.