Mein Github hat momentan 100 Commits. Ich muss das Repository zurücksetzen, um 80 festzuschreiben, und alle nachfolgenden entfernen.
Warum? Dieses Repo soll zum Zusammenführen von verschiedenen Benutzern dienen. Aufgrund übermäßiger Bearbeitung wurden einige Zusammenführungen von mir als Commits vorgenommen. Das lag an einer Fehlbezeichnung meiner Remote-Niederlassungen, bei denen 3 Entwickler als einander gekennzeichnet wurden. Ich muss auf diesen Punkt zurücksetzen und dann nach vorne ziehen.
Ich wollte wie in diesem Beispiel neu starten: Wie kann ich ein Commit auf GitHub entfernen?
Git möchte jedoch, dass ich viel Konfliktmanagement mache. Gibt es einen einfacheren Weg?
git push -f origin branch
. Ich hatte gerade eine schlechte Zeit, weil ich das verpasst habe.git push origin HEAD --force
stattdessen tun,git push -f origin branch
da dies mir einenerror: src refspec branch does not match any.
Fehler gabUm das letzte Commit rückgängig zu machen, mache ich Folgendes:
Zuerst:
Holen Sie sich die neueste SHA-ID zum Rückgängigmachen.
Dadurch wird ein neues Commit erstellt, das genau das Gegenteil von Ihrem Commit bewirkt. Dann können Sie dieses neue Commit verschieben, um Ihre App in den vorherigen Zustand zu versetzen, und Ihr Git-Verlauf zeigt diese Änderungen entsprechend an.
Dies ist gut für eine sofortige Wiederholung von etwas, das Sie gerade begangen haben, was bei mir häufiger der Fall ist.
Wie Mike sagte, können Sie dies auch tun:
quelle
git revert HEAD
wird das letzte Commit zurücksetzen, ohne den Hash nachschlagen zu müssen.Ein anderer Weg:
Überprüfen Sie den Zweig, den Sie zurücksetzen möchten, und setzen Sie dann Ihre lokale Arbeitskopie auf das Commit zurück, das Sie als letztes auf dem Remote-Server verwenden möchten (alles, was danach passiert, wird auf Wiedersehen). Dazu habe ich in SourceTree mit der rechten Maustaste auf "BRANCHNAME auf dieses Commit zurücksetzen" geklickt und ausgewählt.
Navigieren Sie dann zum lokalen Verzeichnis Ihres Repositorys und führen Sie den folgenden Befehl aus:
Dadurch werden alle Commits nach dem aktuellen in Ihrem lokalen Repository gelöscht, jedoch nur für diesen einen Zweig.
quelle
Die meisten Vorschläge gehen davon aus, dass Sie die letzten 20 Commits irgendwie zerstören müssen, weshalb dies "Umschreiben des Verlaufs" bedeutet, dies aber nicht muss.
Erstellen Sie einfach einen neuen Zweig aus dem Commit Nr. 80 und arbeiten Sie in Zukunft an diesem Zweig. Die anderen 20 Commits bleiben in der alten verwaisten Filiale.
Wenn Sie unbedingt möchten, dass Ihr neuer Zweig denselben Namen hat, denken Sie daran, dass es sich bei dem Zweig im Grunde nur um Beschriftungen handelt. Benennen Sie einfach Ihren alten Zweig in einen anderen Zweig um und erstellen Sie den neuen Zweig bei Commit Nr. 80 mit dem gewünschten Namen.
quelle
Wenn ich Zweigaktualisierungen vom Master aus durchführe, stelle ich fest, dass ich manchmal überklicke und den Zweig auch mit dem Master verschmelze. Es wurde ein Weg gefunden, dies rückgängig zu machen.
Wenn Ihr letztes Commit eine Fusion war, ist etwas mehr Liebe erforderlich:
git revert -m 1 HEAD
quelle
In Github können Sie den Remote-Zweig in der Github-Benutzeroberfläche auf der Registerkarte "Zweige" auf einfache Weise löschen. Sie müssen sicherstellen, dass die folgenden Einstellungen entfernt werden, damit der Zweig löschbar ist:
Erstellen Sie es jetzt in Ihrem lokalen Repository neu, um auf den vorherigen Festschreibungspunkt zu verweisen. und fügen Sie es wieder zu Remote Repo hinzu.
Schieben Sie dann den lokalen Zweig auf Remote
Fügen Sie den Standardzweig und den Zweigschutz usw. wieder hinzu.
quelle