2023 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.

224 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.

177 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.

48voto

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.

47voto

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/

12 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

5 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).

43voto

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.

25voto

george mano Punkte 5421

Um die Übertragung aus dem entfernten Repository zu löschen:

 git push -f origin last_known_good_commit:branch_name

Um die Übertragung aus Ihrem lokalen Repository zu löschen:

git reset --hard HEAD~1

Link

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