Ich habe ein Repository gespalten, dann habe ich einige Änderungen vorgenommen und es sieht so aus, als hätte ich alles durcheinander gebracht.
Ich möchte es von vorne beginnen und den aktuellen Upstream / Master als Basis für meine Arbeit verwenden.
Sollte ich mein Repository neu starten oder überhaupt löschen?
Antworten:
Die einfachste Lösung wäre (Verwendung von '
upstream
' als Remote-Name, der auf das ursprüngliche Repo-Gabel verweist):(Ähnlich wie auf dieser GitHub-Seite, Abschnitt "Was soll ich tun, wenn ich in einer schlechten Situation bin?" )
Beachten Sie, dass Sie Änderungen verlieren können, die in der
master
Verzweigung vorgenommen wurden (sowohl lokal aufgrund derreset --hard
als auch auf der Remote-Seite aufgrund derpush --force
).Eine Alternative wäre, wenn Sie Ihre Commits beibehalten möchten,
master
diese Commits zusätzlich zum aktuellen wiederzugebenupstream/master
.Ersetzen Sie das Rücksetzteil durch a
git rebase upstream/master
. Sie müssen dann noch Druck erzwingen.Siehe auch " Was soll ich tun, wenn ich in einer schlechten Situation bin? "
Eine vollständigere Lösung zum Sichern Ihrer aktuellen Arbeit (nur für den Fall) finden Sie unter " Bereinigen des Git-Hauptzweigs und Verschieben eines Commits in einen neuen Zweig ".
Siehe auch " Neue Updates aus dem ursprünglichen GitHub-Repository in das gespaltene GitHub-Repository ziehen ", um zu veranschaulichen, was "
upstream
" ist.Hinweis: Aktuelle GitHub-Repos schützen den
master
Zweig davorpush --force
.Sie müssen also
master
zuerst den Schutz aufheben (siehe Bild unten) und ihn dann nach dem Druck auf die Kraft erneut schützen .Hinweis: Speziell auf GitHub gibt es jetzt (Februar 2019) eine Verknüpfung zum Löschen gegabelter Repos für Pull-Anforderungen, die vorgelagert zusammengeführt wurden.
quelle
git reset --hard upstream/master
git reset
in der Antwort festgelegt.git remote
" Befehle in stackoverflow.com/a/3903835/6309 .Liebe VonCs Antwort. Hier ist eine einfache Version für Anfänger.
Es gibt eine Git-Fernbedienung namens, von
origin
der Sie sicher alle wissen. Grundsätzlich können Sie einem Git-Repo so viele Fernbedienungen hinzufügen, wie Sie möchten. Wir können also eine neue Fernbedienung einführen, die das ursprüngliche Repo und nicht die Gabel ist. Ich nenne es gerneoriginal
Fügen wir unserer Gabel Original-Repos als Fernbedienung hinzu.
Holen wir uns jetzt das Original-Repo, um sicherzustellen, dass wir das neueste codiert haben
Wie VonC vorgeschlagen hat, stellen Sie sicher, dass wir auf dem Master sind.
Um unsere Gabel mit dem neuesten Code für das Original-Repo auf den neuesten Stand zu bringen, müssen wir lediglich unseren Hauptzweig gemäß der Originalfernbedienung hart zurücksetzen.
Und du bist fertig :)
quelle
fatal: ambiguous argument 'original/master': unknown revision or path not in the working tree.
zum letzten Schritt. Irgendein Rat?original
ist besser alsupstream
(was Github-Dokumente verwenden), ebensoorigin/master
wie "Upstream" von lokalmaster
. Reduziert Mehrdeutigkeiten. Ich frage mich, ob Sie es deshalb benutzen.Nach @VonC tolle Antwort. Ihre GitHub-Unternehmensrichtlinie erlaubt möglicherweise keinen "Force Push" für den Master.
remote: error: GH003: Sorry, force-pushing to master is not allowed.
Wenn Sie eine Fehlermeldung wie diese erhalten, führen Sie bitte die folgenden Schritte aus.
Um Ihre Gabel effektiv zurückzusetzen, müssen Sie die folgenden Schritte ausführen:
Öffnen Sie Ihre Gabel auf GitHub und wählen Sie unter "Einstellungen -> Zweige -> Standardzweig" 'new_master' als neuen Standardzweig. Jetzt können Sie den 'Master'-Zweig erzwingen:
Dann müssen Sie 'master' als Standardzweig in den GitHub-Einstellungen zurücksetzen. So löschen Sie 'tmp_master':
Andere Antworten, die vor dem Verlust Ihres Wechsels warnen, gelten weiterhin. Seien Sie vorsichtig.
quelle
Wie es 100% über die Sourcetree GUI geht
(Nicht jeder mag es, Dinge über die Git-Befehlszeilenschnittstelle zu erledigen)
Schritte
Doppelklicken Sie auf Ihren "Master" -Zweig, um ihn auszuchecken, falls er noch nicht ausgecheckt ist.
Suchen Sie das Commit, auf das Sie zurücksetzen möchten. Wenn Sie das Repo "master" genannt haben, möchten Sie höchstwahrscheinlich das Commit mit dem Tag "master / master" finden.
Klicken Sie mit der rechten Maustaste auf das Commit> "Aktuellen Zweig auf dieses Commit zurücksetzen".
Setzen Sie im Dialogfeld das Feld "Verwendungsmodus:" auf "Alle Änderungen an Arbeitskopien verwerfen" und drücken Sie "OK" (stellen Sie sicher, dass alle Änderungen, die Sie nicht verlieren möchten, zuerst in einem separaten Zweig gespeichert werden).
Du bist fertig!
quelle