Wie kann ich ein Git-Repository auf einen bestimmten Commit zurücksetzen?

Lesezeit: 5 Minuten

Wie summiere ich die Werte eines JavaScript Objekts
Jonas Vanasco

Mein Repo enthält gerade 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. Eine Reihe von Merges gingen aufgrund übermäßiger Bearbeitung als Commits von mir ein. Das lag an einer falschen Kennzeichnung meiner entfernten Zweige, wo 3 Entwickler als einander bezeichnet wurden. Ich muss auf diesen Punkt zurücksetzen und dann nach vorne ziehen.

Ich wollte rebasen, wie in diesem Beispiel: Wie kann ich einen Commit auf GitHub entfernen?

Git möchte jedoch, dass ich viel Konfliktmanagement mache. Gibt es einen einfacheren Weg?

Wie kann ich ein Git Repository auf einen bestimmten Commit zurucksetzen
jtdubs

git reset --hard <old-commit-id>
git push -f <remote-name> <branch-name>

Hinweis: Wie in den Kommentaren unten geschrieben, Dies zu verwenden ist in einer kollaborativen Umgebung gefährlich: Sie schreiben die Geschichte neu

  • Menschen tun git push -f origin branch. Ich hatte einfach eine schlechte Zeit, weil ich das verpasst habe.

    – Sumit M Asok

    26. März 2014 um 18:59 Uhr

  • ACHTUNG! Sie werden alle Ihre Commits lokal verlieren, und wenn Sie pushen, gibt es keinen Weg zurück

    – Thomas

    14. April 2014 um 20:35 Uhr

  • Das ist nicht wahr, Sie können die alten Commits mit git reflog abrufen

    – Jan Schäfer

    8. Februar 2015 um 18:28 Uhr

  • müssen Sie möglicherweise tun git push origin HEAD --force anstatt git push -f origin branch wie das gab mir ein error: src refspec branch does not match any. Error

    – Kettenrad12

    18. Februar 2015 um 20:38 Uhr

  • Ja, danke Jungs. Ich habe es geschafft, zu tun, was ich wollte. Ich habe zuerst einen anderen Branch als den vor dem Commit erstellt, den ich zurücksetzen wollte. Lokal geklont. Dann habe ich Ihre Empfehlungen auf diese Kopie angewendet, auf diese Weise habe ich meinen Hauptzweig nicht kompromittiert …

    – Gauthier Boaglio

    1. Juni 2015 um 22:52 Uhr

1646265487 58 Wie kann ich ein Git Repository auf einen bestimmten Commit zurucksetzen
Nick Res

Um den letzten Commit rückgängig zu machen, mache ich Folgendes:

Zuerst:

git log

Holen Sie sich die neueste SHA-ID, um sie rückgängig zu machen.

git revert SHA

Dadurch wird ein neues Commit erstellt, das genau das Gegenteil von Ihrem Commit bewirkt. Dann können Sie diesen neuen Commit pushen, 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 meiner Meinung nach bei mir häufiger der Fall ist.

Wie Mike erwähnte, können Sie auch Folgendes tun:

git revert HEAD

  • git revert HEAD setzt den letzten Commit zurück, ohne den Hash nachschlagen zu müssen.

    – Mike Baranczak

    1. Juli 2016 um 16:19 Uhr

  • Dies ist eine Lösung, wenn Sie überhaupt keine Commits löschen möchten. In diesem Fall sind jedoch alle Müll-Commits immer noch vorhanden und ermöglichen einem Kloner, sie zurückzusetzen oder auszuchecken. Wenn Sie das verhindern wollen, MÜSSEN Sie forcieren.

    – cst1992

    5. November 2016 um 7:06 Uhr


  • Hinweis: Diese Wiederherstellungen können gestapelt werden, d. h. wenn Sie versehentlich zurückkehren, können Sie die Wiederherstellung mit einer anderen Wiederherstellung rückgängig machen.

    – Ingwerindustrie

    6. März 2021 um 12:09 Uhr

  • Die akzeptierte Antwort ist fantastisch, aber ich denke, diese Antwort muss mehr gesehen werden, da es einen Unterschied zwischen RESET und REVERT gibt, der für Menschen sehr wichtig sein kann, wenn sie in kollaborativen Umgebungen arbeiten. Hier ist eine gute Erklärung: stackoverflow.com/questions/8358035/…

    – jcodes

    18. Oktober 2021 um 17:18 Uhr

Wie kann ich ein Git Repository auf einen bestimmten Commit zurucksetzen
KommaToast

Ein anderer Weg:

Checken Sie den Branch aus, den Sie zurücksetzen möchten, und setzen Sie dann Ihre lokale Arbeitskopie auf den Commit zurück, der der letzte auf dem Remote-Server sein soll (alles danach wird auf Wiedersehen gehen). Dazu habe ich in SourceTree mit der rechten Maustaste auf das geklickt und „BRANCHNAME auf diesen Commit zurücksetzen“ ausgewählt.

Navigieren Sie dann zum lokalen Verzeichnis Ihres Repositorys und führen Sie diesen Befehl aus:

git -c diff.mnemonicprefix=false -c core.quotepath=false push -v -f -- tags REPOSITORY_NAME BRANCHNAME:BRANCHNAME 

Dadurch werden alle Commits nach dem aktuellen in Ihrem lokalen Repository gelöscht, jedoch nur für diesen einen Zweig.

  • FYI “REPOSITORY_NAME” wird so etwas wie https:/[email protected]/me/repo_name.git sein

    – Tim

    2. Februar 2016 um 17:17 Uhr


  • Es wäre hilfreicher, wenn Sie diesen Befehl aufschlüsseln und erklären würden.

    – cst1992

    5. November 2016 um 7:04 Uhr

Die meisten Vorschläge gehen davon aus, dass Sie die letzten 20 Commits irgendwie zerstören müssen, weshalb es “Verlauf umschreiben” bedeutet, aber das müssen Sie nicht.

Erstellen Sie einfach einen neuen Zweig aus dem Commit #80 und arbeiten Sie in Zukunft an diesem Zweig. Die anderen 20 Commits bleiben auf dem alten verwaisten Zweig.

Wenn Sie unbedingt möchten, dass Ihr neuer Zweig denselben Namen hat, denken Sie daran, dass Zweige im Grunde nur Labels sind. Benennen Sie einfach Ihren alten Branch in etwas anderes um und erstellen Sie dann den neuen Branch bei Commit #80 mit dem gewünschten Namen.

Wenn ich Zweigaktualisierungen vom Master durchführe, bemerke ich, dass ich manchmal überklicke und den Zweig auch mit dem Master zusammenführe. Habe einen Weg gefunden, das rückgängig zu machen.

Wenn Ihr letzter Commit ein Merge war, ist etwas mehr Liebe erforderlich:

git revert -m 1 HEAD

  • Funktionierte gut für mich, als ich das Commit auf Remote Repo zurücksetzte.

    – Mian Asbat Ahmad

    7. Januar 2021 um 9:38 Uhr

Gradle Version 22 ist erforderlich Aktuelle Version ist 210
Jianwu Chen

In Github besteht die einfache Möglichkeit darin, den Remote-Zweig in der Github-Benutzeroberfläche unter der Registerkarte Zweige zu löschen. Sie müssen sicherstellen, dass die folgenden Einstellungen entfernt werden, um den Zweig löschbar zu machen:

  1. Kein Standard-Zweig
  2. Keine Eröffnungsumfragen.
  3. Der Zweig ist nicht geschützt.

Erstellen Sie es jetzt in Ihrem lokalen Repository neu, um auf den vorherigen Commit-Punkt zu verweisen. und fügen Sie es wieder dem Remote-Repo hinzu.

git checkout -b master 734c2b9b   # replace with your commit point

Pushen Sie dann den lokalen Zweig auf remote

git push -u origin master

Fügen Sie den Standardzweig und den Zweigschutz usw. wieder hinzu.

  • Funktionierte gut für mich, als ich das Commit auf Remote Repo zurücksetzte.

    – Mian Asbat Ahmad

    7. Januar 2021 um 9:38 Uhr

917480cookie-checkWie kann ich ein Git-Repository auf einen bestimmten Commit zurücksetzen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy