Frage Wie setze ich 'Master' auf 'Ursprung / Master' zurück?


Kann ich das Folgende einfacher machen?

git checkout origin/master
git branch -D master
git branch master
git checkout master

151
2018-04-20 10:34


Ursprung


Manchmal kann dies geschehen, ohne den Arbeitsbaum zu berühren: stackoverflow.com/a/12343727/586086 - Andrew Mao
Bitte aktualisieren Sie Ihre angenommene Antwort: @ KindDragon's Antwort ist korrekter und kürzer. - Robert Siemer


Antworten:


Wie KindDragonist es Antworten Erwähnungen können Sie neu erstellen master direkt bei origin/master mit:

git checkout -B master origin/master

Das git checkout Man Seite  Erwähnungen:

Ob -B ist gegeben, <new_branch> wird 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>

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.


209
2018-04-20 11:22



Du kannst das mit einer Linie machen. - Robert Siemer


Git unterstützt diesen Befehl:

git checkout -B master origin/master

Besuche die origin/master verzweigen und dann zurücksetzen master dort verzweigen.


69
2017-08-24 19:30



Die einzig wahre Antwort. - Robert Siemer
speichern Sie vier Tastenanschläge - Sie brauchen die Anführungszeichen nicht. Nur: git checkout -B Master Ursprung - zumalifeguard
Lassen Sie uns sagen, ich habe 2 Dinge begangen, der erste ist eine Verschmelzung mit Zweig und der zweite ist regulär. Was passiert mit der Zusammenführung, wenn ich zurück zum Ursprung / Master gehe? - utdev
musst du nicht git fetch origin master vorher, um sicher zu sein origin/master ist aktualisiert? - pedrozath
Ja, natürlich mit allen Lösungen, die Sie tun sollten git fetch zuerst - KindDragon


Ich denke, sogar die Antwort von VonC ist komplex 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 den Reflog). Also, nachdem Sie diesen Befehl ausgeführt haben, dann master@{1} bezieht sich auf den vorherigen Wert von Master.

VonCs Antwort ist korrekt, aber es kostet Zeit, den alten Wert des Masters in das Dateisystem auszulagern.

Wenn Sie verwaiste Objekte im Repo interessieren, können Sie sie ausführen git gc


28
2018-01-23 20:48



Klingt eine interessante Alternative. +1 - VonC
Ich verstehe immer noch Already on 'master' - yourfriendzak
@yourfriendzak, ich habe vergessen zu berücksichtigen, dass Sie möglicherweise Master bereits ausgecheckt haben, bevor Sie Master aktualisieren. Ich habe die Antwort aktualisiert, um auch in diesem Fall funktionieren zu können. - Alexander Bird
Dies funktioniert auch, wenn Sie nicht Master sind (wie ein gelöster HEAD-Zustand, der tatsächlich auf den Tip-Ursprung / Master zeigt). Dann können Sie den Master auschecken, ohne dass Sie alte Dateien durch das Repo drehen müssen. Groß! - Andrew Mao


Wenn Sie bereits eingeschaltet sind master Sie können Folgendes tun:

git reset --hard origin/master

Es wird auf das Lokale hinweisen master auf die Fernbedienung verzweigen origin/master und verwerfen Sie alle Änderungen im Arbeitsverzeichnis.


11
2018-06-25 15:47



Und löscht Dateien! Wenn Sie Dateien erstellt und bearbeitet haben und "git add" ausgeführt haben, löscht dieser Befehl sie. Sei gewarnt. - Cheeso


Du bist bereits der Meister. Sie möchten den entfernten Ursprung so entfernen git pull macht nichts. Damit

git remote rm origin

Sie können dann das aktuelle Repository als Ursprung zum Remote-Repository hinzufügen, wenn Ihnen danach ist.

NB: Wenn local vor remote steht, löscht Ihre Lösung lokale Änderungen!


-1
2018-01-28 03:04



Diese Antwort ergibt keinen Sinn. - ADTC
Dies ist direkt irreführend und könnte das Projekt, an dem die Leute arbeiten, verletzen. - Wisienkas
Das ist nicht richtig. Ich bin mir nicht sicher, warum Sie eine Aufwertung hatten. - Saher Ahwal