it-swarm-eu.dev

Wie kann ich ein Commit auf GitHub entfernen?

Ich habe "versehentlich" einen Commit zu GitHub durchgeführt.

Ist es möglich, dieses Commit zu entfernen?

Ich möchte mein GitHub-Repository so wiederherstellen, wie es vor diesem Commit war.

1591
hectorsq

Hinweis: siehe Alternative zu git rebase -i in den Kommentaren unten—

git reset --soft HEAD^

Entfernen Sie zunächst das Commit für Ihr lokales Repository. Sie können dies mit git rebase -i tun. Wenn es beispielsweise Ihr letzter Commit ist, können Sie git rebase -i HEAD~2 ausführen und die zweite Zeile im angezeigten Editorfenster löschen.

Dann erzwinge Push to GitHub mit git Push Origin +branchName --force

Weitere Informationen finden Sie unter Git Magic, Kapitel 5: Lektionen der Geschichte - und dann einige (d. H., Wenn Sie ältere Commits entfernen möchten).

Oh, und wenn Ihr Arbeitsbaum schmutzig ist, müssen Sie zuerst einen git stash und anschließend einen git stash apply ausführen.

1130
Can Berk Güder
git Push -f Origin HEAD^:master

Das sollte den Push "rückgängig machen".

914
Dustin

Für eine einfache Wiederherstellung, wenn es nur ein Fehler ist (vielleicht haben Sie ein Repo gegabelt und dann auf das Original anstatt auf ein neues geschoben), gibt es eine weitere Möglichkeit:

git reset --hard 71c27777543ccfcb0376dcdd8f6777df055ef479

Tauschen Sie diese Nummer offensichtlich gegen die Nummer des Commits aus, zu dem Sie zurückkehren möchten.

Alles seitdem wird gelöscht, sobald Sie erneut drücken. Um dies zu tun, wäre der nächste Schritt:

git Push --force
325
CodeWalrus
  1. git log, um das Commit zu ermitteln, das Sie zurücksetzen möchten

  2. git Push Origin +7f6d03:master während 7f6d03 das Commit vor dem falsch übertragenen Commit ist. + war für force Push

Und das ist es.

hier ist eine sehr gute Anleitung, die Ihr Problem einfach und unkompliziert löst!

91
kate

Falls Sie die Commit-Änderungen nach dem Löschen beibehalten möchten:

Beachten Sie, dass diese Lösung funktioniert, wenn das zu entfernende Commit das letzte Commit ist.


1 - Kopieren Sie die Commit-Referenz, zu der Sie zurückkehren möchten, aus dem Protokoll:

git log

2 - Setze Git auf die Commit-Referenz zurück:

 git reset <commit_ref>

3 - Speichern Sie die lokalen Änderungen aus dem falschen Commit, die später nach dem Push auf Remote verwendet werden sollen:

 git stash

4 - Übertragen Sie die Änderungen in das Remote-Repository (-f oder --force):

git Push -f

5 - Abrufen der gespeicherten Änderungen im lokalen Repository:

git stash apply

7 - Falls Sie nicht verfolgte/neue Dateien in den Änderungen haben, müssen Sie diese vor dem Festschreiben zu git hinzufügen:

git add .

6 - Fügen Sie alle zusätzlichen Änderungen hinzu, die Sie benötigen, und schreiben Sie die erforderlichen Dateien fest (oder verwenden Sie einen Punkt '.', Anstatt jeden Dateinamen anzugeben, um alle Dateien im lokalen Repository festzuschreiben):

git commit -m "<new_commit_message>" <file1> <file2> ...

oder

git commit -m "<new_commit_message>" .
52
Loukan ElKadi

Sie müssen Ihren Cache leeren, damit er vollständig gelöscht wird. Diese Hilfeseite von Git wird Ihnen helfen. (Es hat mir geholfen) http://help.github.com/remove-sensitive-data/

35
subutux

Verwenden Sie git revert, um Ihren Push zurückzusetzen.

git-revert - Einige bestehende Commits zurücksetzen

git revert [--edit | --no-edit] [-n] [-m parent-number] [-s] <commit>...
git revert --continue
git revert --quit
git revert --abort

Machen Sie die Änderungen, die durch die zugehörigen Patches eingeführt wurden, rückgängig und zeichnen Sie einige neue Commits auf, die sie aufzeichnen. Dies setzt voraus, dass Ihr Arbeitsbaum sauber ist (keine Änderungen durch das Festschreiben von HEAD).

26
Jyoti Prakash
1. git reset HEAD^ --hard
2. git Push Origin -f

Diese Arbeit für mich.

22
Hilen

So löschen Sie das Commit aus dem Remote-Repository:

 git Push -f Origin last_known_good_commit:branch_name

Um das Commit aus Ihrem lokalen Repository zu löschen:

git reset --hard HEAD~1

Link

16
george mano

Löschen Sie das letzte Commit und behalten Sie die geleistete Arbeit bei:

git reset --soft HEAD~1

Löschen Sie das letzte Commit und zerstören Sie die von Ihnen geleistete Arbeit:

git reset --hard HEAD~1
14
Ekambaram E

Sie müssen Ihren Commit-Hash von dem Commit kennen, zu dem Sie zurückkehren möchten. Sie können es von einer GitHub-URL erhalten wie: https://github.com/your-organization/your-project/commits/master

Angenommen, der Hash des Commits (zu dem Sie zurückkehren möchten) lautet "99fb454" (lange Version "99fb45413eb9ca4b3063e07b40402b136a8cf264"). Dann müssen Sie nur noch Folgendes tun:

git reset --hard 99fb45413eb9ca4b3063e07b40402b136a8cf264
git Push --force
9

Suchen Sie die Referenzspezifikation des Commits, das Sie als Leiter Ihres Zweigs auf Github festlegen möchten, und verwenden Sie den folgenden Befehl:

_git Push Origin +[ref]:[branchName]_

In Ihrem Fall, wenn Sie nur ein Commit zurückgehen möchten, suchen Sie den Anfang des Verweises für dieses Commit, z. B. 7f6d03, und den Namen des Zweigs, den Sie ändern möchten, z. B. master, und Mach Folgendes:

_git Push Origin +7f6d03:master_

Das Pluszeichen wird als _--force_ interpretiert. Dies ist erforderlich, da Sie den Verlauf neu schreiben.

Beachten Sie, dass Sie bei jedem _--force_ Commit die Geschichte anderer Personen, die Ihren Zweig zusammenführen, möglicherweise neu schreiben können. Wenn Sie das Problem jedoch schnell beheben (bevor eine andere Person Ihre Zweigstelle zusammenführt), treten keine Probleme auf.

9
orb

Wenn Sie dies tun, weil Sie vertrauliche Daten in einem Commit haben, ist die Verwendung der anderen Antworten hier nicht sicher (mit Ausnahme von Subutux, auf die ich näher eingehen werde) ).

Die Github-Anleitung hierz empfiehlt die Verwendung eines externen Tools, ich bevorzuge jedoch die Verwendung des integrierten Tools.

Erstellen Sie zunächst eine Sicherungskopie Ihres Repositorys . Dann:

git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA' \
--Prune-empty --tag-name-filter cat -- --all

Stellen Sie danach sicher, dass sich das Repository in dem gewünschten Zustand befindet . Möglicherweise möchten Sie sich von der Sicherung unterscheiden.

Wenn Sie sicher sind, dass es richtig ist, dann:

#get rid of old unreferenced commits (including the data you want to remove)
git gc --Prune=now
git Push Origin --force --all

Möglicherweise möchten Sie die lokale Sicherung für eine Weile aufbewahren, nur für den Fall.

6
goncalopp

Führen Sie diesen Befehl auf Ihrem Terminal aus.

git reset HEAD~n

Sie können die letzten n Commits aus dem lokalen Repository entfernen, z. KOPF ~ 2. Fahren Sie mit force git Push auf Ihrem Repository fort.

git Push -f Origin <branch>

Hoffe das hilft!

5
Kent Aguilar

Um die Verzweigungs- und Zusammenführungsstruktur beizubehalten, ist es wichtig, die Option --preserve-merges zu verwenden, wenn Sie die Rebase ausführen:

git rebase --preserve-merges -i HEAD^^
3
Carlos Mafla

Speichern Sie Ihre lokalen Änderungen zuerst irgendwo auf der Seite (Backup)

Sie können Ihre letzten Commits durchsuchen und dann einen Commit-Hash auswählen, indem Sie auf "Den vollständigen SHA kopieren" klicken, um ihn in die Zwischenablage zu kopieren.

Wenn Ihr letzter Commit-Hash lautet, sagen wir g0834hg304gh3084gh (zum Beispiel)

Du musst laufen:

git Push Origin +g0834hg304gh3084gh:master

Verwenden Sie den zuvor kopierten Hash, um ihn zur "HEAD" -Revision zu machen.

Fügen Sie die gewünschten lokalen Änderungen hinzu. Getan ;)

Für GitHub

  • Setzen Sie Ihre Commits (HARD) in Ihrem lokalen Repository zurück
  • Erstellen Sie eine neue Niederlassung
  • Schieben Sie den neuen Zweig
  • ALTEN Zweig löschen (Neuen Zweig als Standardzweig erstellen, wenn Sie den Hauptzweig löschen)
2
M_R_K

wenn Sie entfernen möchten, tun interaktive Rebase,

git rebase -i HEAD~4

4 represents total number of commits to display count your commit andändern Sie es entsprechend

und lösche das gewünschte Commit aus der Liste ...

änderungen speichern mit Strg + X (ubuntu) oder : wq (centos)

2. Methode, machen Sie zurück,

git revert 29f4a2 #your commit ID

dadurch wird das spezifische Commit zurückgesetzt