variable - Entferne lokale Commits in git




was sind git tags (6)

Wegen meiner schlechten Rosinenpickerei ist mein lokales Git Repository derzeit 5 Commits vor dem Ursprung und nicht in einem guten Zustand. Ich möchte alle diese Commits loswerden und von vorn beginnen.

Offensichtlich würde das Löschen meines Arbeitsverzeichnisses und das Re-Cloning es tun, aber das Herunterladen von allem aus GitHub erscheint wieder als Overkill und nicht als eine gute Nutzung meiner Zeit.

Vielleicht git revert ist was ich brauche, aber ich möchte nicht 10 Commits vor dem Ursprung (oder sogar 6) enden, auch wenn es den Code selbst wieder in den richtigen Zustand bringt. Ich will nur so tun, als wäre die letzte halbe Stunde nie passiert.

Gibt es einen einfachen Befehl, der das tut? Es scheint ein offensichtlicher Anwendungsfall zu sein, aber ich finde keine Beispiele dafür.

Beachten Sie, dass es sich bei dieser Frage speziell um Commits handelt und nicht um Folgendes :

  • nicht aufgezeichnete Dateien
  • nicht veränderte Änderungen
  • gestaffelte aber nicht festgeschriebene Änderungen

Auf deinem Zweigversuch:

git reset --hard origin/<branch_name>

Validiere die Umkehrung (in den Zustand ohne lokale Commits), benutze daher " git log " oder " git status ".


Für lokale Commits, die nicht gepusht werden, können Sie auch git rebase -i , um ein Commit zu löschen oder zu git rebase -i .


Löschen Sie den letzten Commit:

git reset --hard HEAD~1

Löschen Sie das letzte Commit, ohne die Arbeit zu zerstören, die Sie getan haben:

git reset --soft HEAD~1


Löschen Sie einfach Ihren lokalen Masterzweig und erstellen Sie ihn wie folgt neu:

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

Versuchen:

git reset --hard <the sha1 hash>

um deinen Kopf dorthin zurückzusetzen, wo du sein willst. Verwenden Sie gitk, um zu sehen, bei welchem ​​Commit Sie sich befinden möchten. Sie können dies auch innerhalb von gitk tun.


Wenn Ihre überschüssigen Commits nur für Sie sichtbar sind, können Sie einfach git reset --hard origin/<branch_name> , um git reset --hard origin/<branch_name> zurückzukehren, wo der Ursprung ist.

Wenn Sie eine git revert neue Commits gemacht, um alte Commits auf eine Weise zu entfernen, die die Geschichte von jedermann in Ordnung hält.







git