Wie kann ich ein Commit auf GitHub entfernen?
Ich "versehentlich" stieß einem commit auf GitHub.
Ist es möglich, entfernen Sie diese Begehen?
Ich rückgängig machen wollen mein GitHub-repository, wie es war, bevor Sie diese Begehen.
Kommentar zu dem Problem
Vorsicht: nicht immer tun Sie dies, wenn Sie haben eine Menge von Menschen nach Ihrem repository haben, sollten Sie Ihre lokale repository synchron gehen, wenn Sie gezogen haben, in die letzten änderungen. Wenn es sich um einen Fehler, können Sie einfach tun, eine weitere verpflichten beheben die Fehler. Wenn es sich um ein Kennwort, möchten Sie vielleicht, um das Kennwort zu ändern und stattdessen beeilen Sie sich nicht, diese zu löschen. Zwingt Dinge geht nicht ohne Nachteile.
ein Wort der Vorsicht 2: Der commit kann immer noch zugegriffen werden, die direkt über SHA1. Force push nicht löschen die Begehung, erstellt er eine neue ein und verschiebt den Datei-Zeiger. Um wirklich zu löschen ein commit müssen Sie löschen Sie das ganze repo.
Vielen Dank, dass WOC2 geholfen, mich zu erholen my precious-code von einem Fehler zu löschen!! Danke!
@Gustav "... müssen Sie löschen Sie das ganze repo." - Oder einfach nur Kraft, die garbage collection, um kick in.
InformationsquelleAutor der Frage hectorsq | 2009-01-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entfernen Sie zuerst die commit auf Ihrem lokalen repository. Sie können dies tun, indem
git rebase -i
. Zum Beispiel, wenn es dein letzter commit, die Sie tun könnengit rebase -i HEAD~2
und löschen der zweiten Zeile im editor-Fenster, dass pops-up.Dann, Kraft push zu GitHub mithilfe
git push origin +branchName
Sehen Git Magic-Kapitel 5: Lehren der Geschichte - Und Dann Einige für weitere Informationen (z.B., wenn Sie entfernen möchten ältere commits).
Oh, und wenn Ihr arbeiten Baum ist schmutzig, Sie haben zu tun, ein
git stash
ersten, und dann eingit stash apply
nach.InformationsquelleAutor der Antwort Can Berk Güder
Sollte "rückgängig" drücken.
InformationsquelleAutor der Antwort Dustin
Für einen einfachen revert, wenn es nur ein Fehler ist (vielleicht ist Sie Gabel-repo, dann landete man auf das original anstatt ein neues) hier eine andere Möglichkeit:
Offensichtlich swap-in, die Zahl für die Nummer der änderung, die Sie zurückgeben möchten.
Alles seit dann werden Sie gelöscht, wenn Sie erneut drücken. Zu tun, der nächste Schritt wäre:
InformationsquelleAutor der Antwort CodeWalrus
git log
um herauszufinden, die Begehen, die Sie wiederherstellen möchten
git push origin +7f6d03:master
während 7f6d03 ist die Begehen werden, bevor die zu Unrecht gedrängt Begehen.
+
war fürforce push
Und das ist es.
Hier ist eine sehr gute Anleitung, die Ihr problem löst, leicht und einfach!
InformationsquelleAutor der Antwort kate
Müssen Sie löschen Sie Ihren cache, um es vollständig ausgelöscht.
diese Hilfe-Seite aus dem git wird Ihnen helfen. (es hat mir geholfen)
http://help.github.com/remove-sensitive-data/
InformationsquelleAutor der Antwort subutux
Im Fall Sie möchten, um die änderungen nach dem löschen:
Beachten Sie, dass diese Lösung funktioniert, wenn der commit entfernt werden, ist der Letzte verpflichtet.
1 - Kopie der commit-Referenz, die Sie möchten, um zurück zu gehen, um aus der log:
2 - Reset-git-der commit-Referenz:
3 - Stash/speichern der lokalen änderungen von der falschen Begehen, um Sie später zu verwenden nach dem drücken auf Fernbedienung:
4 - Schieben Sie die änderungen an der remote-repository, (-f oder --force):
5 - wieder den gespeicherten änderungen an lokalen repository:
7 - In-case Sie haben nicht/neue Dateien in die änderungen, die Sie brauchen, um Sie zu git vor der Begehung:
6 - Hinzufügen, was zusätzliche änderungen, die Sie benötigen und übertragen Sie die Dateien benötigt, (oder verwenden Sie einen Punkt '.' statt der Angabe von Dateinamen, zu verpflichten, alle Dateien in das lokale repository:
oder
InformationsquelleAutor der Antwort Loukan ElKadi
Verwenden
git revert
für das zurücksetzen drücken.Die änderungen rückgängig machen, die patches einzuführen, und zeichnen Sie einige neue verpflichtet, Sie aufzunehmen. Dies erfordert, dass die arbeiten Baum sauber sein (keine änderungen aus dem KOPF zu Begehen).
InformationsquelleAutor der Antwort Jyoti Prakash
Diese Arbeit für mich.
InformationsquelleAutor der Antwort Hilen
Löschen Sie den commit aus dem remote-repository:
Damit löschen Sie den commit aus Ihrem lokalen repository:
link
InformationsquelleAutor der Antwort george mano
Finden Sie die ref-spec die zu Begehen Sie wollen den Kopf des branch auf Github und verwenden Sie folgenden Befehl:
git push origin +[ref]:[branchName]
In Ihrem Fall, wenn Sie nur wollen, um wieder einen commit, suchen Sie den Anfang des ref für das Begehen, zum Beispiel sagen, es ist 7f6d03, und der name des Zweiges, den Sie ändern möchten, zum Beispiel sagen, es ist der Herr, und Tue Folgendes:
git push origin +7f6d03:master
Ist das plus-Zeichen wird interpretiert als
--force
, die notwendig sein werden, da sind Sie, die Geschichte umzuschreiben.Beachten Sie, dass jedes mal, wenn Sie
--force
eine commit-Sie könnten umschreiben, alle anderen Völker der Geschichte, die die Grenzen Ihrer Filiale. Allerdings, wenn Sie fangen das problem schnell (und vor allen anderen Zusammenführungen, die Ihren Zweig), hast du keine Probleme.InformationsquelleAutor der Antwort orb
Müssen Sie wissen, Ihre commit-hash aus dem Begehen Sie wiederherstellen möchten. Sie können es von einem GitHub-URL wie: https://github.com/your-organization/your-project/commits/master
Sagen wir mal den hash aus der commit (wo Sie wollen, um zurück zu gehen) "99fb454" (lange version "99fb45413eb9ca4b3063e07b40402b136a8cf264"), dann alles, was Sie tun müssen, ist:
InformationsquelleAutor der Antwort Benny Neugebauer
Löschen des letzten commit, halten die Arbeit, die Sie getan haben:
Löschen des letzten commit, die Zerstörung der Arbeit, die Sie getan haben:
InformationsquelleAutor der Antwort Ekambaram E
, Wenn Sie tun dies, weil Sie sensible Daten in einer Begehung mit der anderen Antworten hier ist es nicht sicher (ausgenommen subutux, die werde ich erweitern).
Den github-guide an empfiehlt die Verwendung einer externen tool, aber ich lieber mit dem built-in one.
Erstens, machen Sie ein backup Ihres repository. Dann:
Danach stellen Sie sicher, dass das repository ist in dem Zustand, Sie wollen. Vielleicht möchten diff gegen die Sicherung.
Wenn Sie sicher sind, dass es richtig ist, dann:
Möchten Sie vielleicht zu halten, das lokale backup für eine Weile, nur für den Fall.
InformationsquelleAutor der Antwort goncalopp
Zur Erhaltung der Verzweigung und Zusammenführung von Struktur ist wichtig, um die
--preserve-merges
option, wenn dabei der Stellungswechsel:InformationsquelleAutor der Antwort Carlos Mafla
Führen Sie diesen Befehl auf dem terminal.
Können Sie entfernen die letzten n commits vom local repo-z.B. HEAD~2.
Gehen Sie mit der Kraft git push auf das repository.
Hoffe, das hilft!
InformationsquelleAutor der Antwort Kent Aguilar
Speichern Sie Ihre lokalen änderungen zuerst irgendwo auf der Seite ( backup )
Können Sie durchsuchen Sie Ihre letzten begeht, dann wählen Sie eine commit-hash, indem Sie auf
"Kopieren Sie den vollständigen SHA" - Taste, um an die Zwischenablage zu senden.
Wenn Ihre Letzte commit-hash, sagen g0834hg304gh3084gh ( zum Beispiel )
Müssen Sie ausführen:
git push origin +g0834hg304gh3084gh:master
Mit dem hash, den Sie kopiert haben früher zu machen, der "KOPF" der revision.
Fügen Sie den gewünschten lokalen änderungen. Getan 😉
InformationsquelleAutor der Antwort Деян Добромиров
Für GitHub - Reset Ihre commits (HART) in deinem lokalen repo und erstellen Sie einen neuen Zweig. Drücken Sie neue . Löschen Sie die ALTE Filiale. (Machen neue als default-Zweig, wenn Sie das löschen der master-branch)
InformationsquelleAutor der Antwort M_R_K
wenn Sie entfernen möchten, tun interaktiven rebase,
git rebase -i HEAD~4
4 represents total number of commits to display count your commit and
entsprechend ändernlöschen und verpflichten Sie möchten, aus der Liste...
speichern Sie die änderungen durch Strg+X(ubuntu) oder :wq(centos)
2. Methode, tun Sie zurück,
diese wieder spezifische Begehen
InformationsquelleAutor der Antwort Mohideen ibn Mohammed
Ist es nicht sehr gut, neu zu schreiben die Geschichte. Wenn wir
git revert <commit_id>
es schafft einen sauberen reverse-übergabe sagte commit-id.Diese Weise die Geschichte nicht neu geschrieben werden, stattdessen weiß jeder, dass es eine "wiederherstellen".
InformationsquelleAutor der Antwort vivek_ganesan
Hinzufügen/entfernen von Dateien, um die Dinge so, wie Sie wollen:
Dann ändern Sie die commit:
Vorherigen, fehlerhaften commit bearbeitet werden, um die neue index-Staat - in anderen Worten, es wird sein, wie Sie noch nie den Fehler gemacht in den ersten Platz
Beachten Sie, dass Sie sollten dies nur tun, wenn Sie nicht gedrängt noch. Wenn Sie gedrückt haben, dann müssen Sie sich nur verpflichten müssen, eine Korrektur normal.
InformationsquelleAutor der Antwort Chirag Thakar