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.
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.
Wenn die Verpflichtung A die erste ist, ist B die zweite. Welche Übertragung wollen Sie zurücksetzen?
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/
+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
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.
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).
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.
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.
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.
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.
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.
0 Stimmen
Ich war auf der Suche nach einer Möglichkeit, einen Commit über die Github-Oberfläche rückgängig zu machen. Für diese Frage würde ich vorschlagen, einen neuen Commit zu pushen, der die Änderung rückgängig macht, anstatt die Geschichte neu zu schreiben.
6 Stimmen
Was WOC1 betrifft, so erhalten die Follower beim nächsten Ziehen automatisch den neuen Verlauf und verlieren den alten, was durchaus akzeptabel zu sein scheint. Das Problem ist, wenn andere Personen neue Arbeit geleistet haben nach Ihre Übergabe: dann verursachen Sie eine erhebliche Menge an Ärger für sie (sie müssen ihre Änderungen in die neue Historie übernehmen). Das macht einen Force Push akzeptabler nach 1 Minute als nach 1 Woche (weniger Follower ausgesetzt), und akzeptabler für Projekte, die Menschen utilice aber nicht ändern. (sie werden nicht bemerken, dass die Zeitlinie geändert wurde).
0 Stimmen
Verwandt: Die letzte Git-Übertragung rückgängig machen? .
11 Stimmen
Bitbucket-Version dieser Frage .
2 Stimmen
Re WOC2 : die Übergabe ist über das Reflog zugänglich, aber nur vorübergehend , solange reflog nicht abgelaufen ist.
git fsck --no-reflogs
wird es zeigen. Versuchen Sie, reflog zum Auslaufen zu zwingen:git -c gc.reflogExpire=0 -c gc.reflogExpireUnreachable=0 -c gc.pruneExpire=now gc
2 Stimmen
@IQAndreas Sobald Sie einen Commit auf GitHub veröffentlicht haben, sollten Sie alle darin enthaltenen Daten als kompromittiert betrachten .
0 Stimmen
Das ist vielleicht total verrückt, aber wie wäre es, wenn du den Zweig komplett von GitHub entfernst und dann deinen lokalen Zweig auf GitHub veröffentlichst? (wenn man bedenkt, dass man der Einzige ist, der an diesem Zweig arbeitet, oder wenn man die möglichen Konsequenzen kennt und sich darum kümmern kann)