2083 Stimmen

Wie kann ich einen Commit auf GitHub entfernen?

Ich habe "versehentlich" einen Commit auf GitHub veröffentlicht.

Ist es möglich, diese Übertragung zu entfernen?

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

233 Stimmen

Ein Wort der Warnung : Tun Sie dies niemals, wenn Sie viele Leute haben, die Ihrem Projektarchiv folgen, Sie werden deren lokales Projektarchiv aus der Synchronisation bringen, wenn sie die letzten Änderungen eingezogen haben. Wenn es sich um einen Fehler handelt, können Sie einfach eine weitere Übergabe durchführen und den Fehler rückgängig machen. Wenn es sich um ein Passwort handelt, sollten Sie stattdessen das Passwort ändern und sich nicht beeilen, es zu löschen. Dinge erzwingen ist nicht frei von Nachteilen.

182 Stimmen

Ein Wort der Warnung 2: Auf die Übergabe kann weiterhin direkt über SHA1 zugegriffen werden. Force push löscht die Übergabe nicht, sondern erstellt eine neue und verschiebt den Dateizeiger auf diese. Um einen Commit wirklich zu löschen, müssen Sie das gesamte Projektarchiv löschen.

31 Stimmen

@Gustav "... Sie müssen das gesamte Repo löschen." - Oder zwingen Sie einfach die Garbage Collection.

54voto

Hilen Punkte 631
git reset HEAD^ --hard
git push origin -f

Das funktioniert bei mir.

0 Stimmen

Sagt "Alles auf dem neuesten Stand", wenn der Commit bereits auf GitHub gepusht wurde...

0 Stimmen

Wenn die Verpflichtung A die erste ist, ist B die zweite. Welche Übertragung wollen Sie zurücksetzen?

0 Stimmen

A ist das Neueste und ich würde gerne zu B zurückkehren.

48voto

subutux Punkte 419

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

13 Stimmen

+1: Während Sie den Commit aus Ihrem Zweig entfernen, ist er immer noch auf GitHub verfügbar, wenn Sie die URL/SHA-1 kennen. Die einzige Möglichkeit, den Commit aus dem Cache zu entfernen, besteht darin, den GH-Support zu kontaktieren (siehe den Abschnitt "Cached Data on Github" in diesem Link

6 Stimmen

Ich möchte anmerken, dass es vielleicht besser gewesen wäre, zu erklären, was auf der Seite steht, und die entsprechenden Abschnitte zu zitieren. Von der Hilfe-Leitfaden Dort heißt es: "Links zu externen Quellen sind erwünscht, aber fügen Sie bitte einen Kontext zu dem Link hinzu, damit Ihre Mitnutzer eine Vorstellung davon haben, worum es sich handelt und warum er dort ist. Zitieren Sie immer den wichtigsten Teil eines wichtigen Links, für den Fall, dass die Zielseite unerreichbar ist oder dauerhaft offline geht." Faustregel: Tun Sie so, als ob der Link nicht vorhanden wäre oder nicht angeklickt werden könnte.

3 Stimmen

Es gibt eine weitere Möglichkeit, den Cache zu löschen: Löschen Sie das Repository, erstellen Sie es neu und pushen Sie es. Auch wenn dies nicht für jeden möglich ist, ist es für viele einfacher und schneller, als sich an den Github-Support zu wenden (und vielleicht möchten Sie nicht auf eine dritte Partei [Github] verweisen, dass Sie sensible Daten gepusht haben).

44voto

Ekambaram E Punkte 1064

Löschen Sie den letzten Commit und behalten Sie Ihre Arbeit:

git reset --soft HEAD~1

Löschen Sie den letzten Commit und zerstören Sie damit die Arbeit, die Sie geleistet haben:

git reset --hard HEAD~1

12 Stimmen

Was ist mit dem Push danach?

28voto

Jyoti Prakash Punkte 3635

Verwenden Sie git revert für die Rückgängigmachung Ihres Vorstoßes.

git-revert - Einige bestehende Übertragungen rückgängig machen

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

Machen Sie die Änderungen rückgängig, die die zugehörigen Patches einführen, und nehmen Sie einige neue Commits auf, die diese Änderungen aufzeichnen. Dazu muss Ihr Arbeitsbaum sauber sein (keine Änderungen gegenüber dem HEAD-Commit).

Hinweis : mit einem Git rückgängig machen wird verwendet, um einige neue Übertragungen aufzuzeichnen, um die Wirkung einiger früherer Übertragungen (oft nur einer fehlerhaften) rückgängig zu machen. Wenn Sie alle nicht übertragenen Änderungen in Ihrem Arbeitsverzeichnis wegwerfen wollen, sollten Sie sich git-reset , insbesondere die --hart Option.

14 Stimmen

Das ist der empfohlene Weg, um zu vermeiden, dass die Klone anderer Leute zerstört werden. Es wird ein neuer Commit erstellt, der einen früheren Commit rückgängig macht. Es beantwortet jedoch nicht die Frage, die darin bestand, einen Commit aus der "Geschichte" zu entfernen.

0 Stimmen

Viele der anderen Antworten sind gut, aber dies ist der einzige Weg, der zu funktionieren scheint, wenn man keine Force Pushes zur Beherrschung einsetzen kann.

0 Stimmen

Ein Beispiel für die Verwendung wäre hilfreich, besser als das Einfügen aus der Manpage. Den Leuten helfen, sich durchzuwühlen [] Zeug.

26voto

Benny Neugebauer Punkte 45468

Sie müssen den Commit-Hash des Commits kennen, zu dem Sie zurückkehren wollen. Sie können ihn von einer GitHub-URL wie der folgenden erhalten: https://github.com/your-organization/your-project/commits/master

Nehmen wir an, der Hash der Übergabe (zu der Sie zurückkehren wollen) ist "99fb454" (lange Version "99fb45413eb9ca4b3063e07b40402b136a8cf264"), dann müssen Sie nur noch Folgendes tun:

git reset --hard 99fb45413eb9ca4b3063e07b40402b136a8cf264
git push --force

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X