Wie setze ich 'master' auf 'origin/master'zurück?

Kann ich auf einfachere Weise Folgendes tun?

git checkout origin/master
git branch -D master
git branch master
git checkout master
 261
git
Author: Peter Mortensen, 2011-04-20

4 answers

Git unterstützt diesen Befehl:

git checkout -B master origin/master

Check out the origin/master - Zweig und dann reset - master - Zweig gibt.

 130
Author: KindDragon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-05-10 18:20:58

Als KindDragon ' s Antwort erwähnt, können Sie master direkt bei origin/master neu erstellen mit:

git checkout -B master origin/master

Der git checkout man page erwähnt:

Wenn -B angegeben ist, wird <new_branch> erstellt, wenn es nicht existiert; andernfalls wird es zurückgesetzt. Dies ist das Transaktionsäquivalent von

$ git branch -f <branch> [<start point>]
$ git checkout <branch>

Seit Git 2.23+ (August 2019), seit git checkout ist zu verwirrend, der neue (noch experimentelle) Befehl ist 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 bequeme Abkürzung für:

$ git branch -f <new-branch>
$ git switch <new-branch>

Ursprünglich vorgeschlagen:

So 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.

 380
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-12-18 15:07:10

Ich denke, sogar VonCs Antwort hat Komplexität im Vergleich zu dieser Option:

git update-ref refs/heads/master origin/master
git reset --hard master

Git protokolliert automatisch jeden Wert eines ref (über das reflog). Nachdem Sie 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 im Dateisystem auszuchecken.

Wenn Sie sich für verwaiste Objekte im Repo interessieren, können Sie git gc

 31
Author: Alexander Bird,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-08-22 19:02:34

Wenn Sie bereits auf master sind, können Sie Folgendes tun:

git reset --hard origin/master

Es zeigt den lokalen Zweig master auf den entfernten Zweig origin/master und verwirft alle Änderungen im Arbeitsverzeichnis.

 27
Author: Fuad Saud,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-06-25 15:47:13