Verwenden Sie interaktive Rebase:
git rebase -i SHA-OF-FIRST-COMMIT-IN-BRANCH
Das öffnet so etwas in Ihrem $ EDITOR:
pick 8ac4783 folders and folders
pick cf8b1f5 minor refactor
pick 762b37a Lots of improvement. Folders adn shit.
pick 3fae6e1 Be ready to tableview
pick b174dc0 replace folder collection view w/ table view
pick ef1b65b more finish
pick ecc407f responder chain and whatnot
pick 080a847 play/pause video
pick 6719000 wip: movie fader
pick c5f2933 presentation window fade transition
# Rebase e6f77c8..c5f2933 onto e6f77c8
#
# Commands:
# p, pick = use commit
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
Sie entfernen also einfach die Zeile mit dem Debug-Commit, schreiben die Datei und schließen den Editor. Git sagt Ihnen Folgendes:
Successfully rebased and updated refs/heads/master.
Jetzt können Sie diesen Zweig einfach zum Master zusammenführen.
UPDATE: Es soll beachtet werden , dass mit der Geschichte verändern rebase
sollte nur auf private Filialen passieren. Wenn dieser Zweig der Öffentlichkeit zugänglich gemacht wurde, verwenden Sie ihn git revert
wie von einem anderen Antwortenden vorgeschlagen.
Ungeachtet dessen, was andere SCMs damit meinen
git
,git revert
handelt es sich um eine inverse Kirschpickel .quelle
git revert
zeichnet ein neues Commit auf, wobei die entsprechenden Änderungen entfernt wurden.revert
undcherry-pick
haben auch eine-n
Option, die kein Commit ausführt, aber die Änderungen im Bereich Cache / Index / Staging belässt, sodass die Befehle sehr ähnlich sind.git
meiner Meinung nach Sinn macht, da es letztendlich nur um Unterschiede zwischen Schnappschüssen geht, nicht um abhängige Ereignisse. Ich weiß nicht. Ich lerne immer wieder über solche Funktionen und erwarte, dass es einen Haken gibt, aber sie scheinen jedes Mal einfach zu funktionieren!Eine andere Idee ist, das rückgängig gemachte Commit desjenigen mit Debug-Code hinzuzufügen und es in Ihrem Hauptzweig zusammenzuführen. Danach entfernen wir dieses zusätzliche Commit im foo-Zweig.
Stellen Sie sicher, dass Ihr Arbeitsbaum sauber ist. Erstellen Sie zuerst das zurückgesetzte Commit. Dann füge es in Master zusammen. Setzen Sie anschließend den Verzweigungszeiger des foo-Zweigs auf das übergeordnete Element des zurückgesetzten Commits zurück, damit er wieder in seinem ursprünglichen Zustand ist.
Wenn Sie die Verwendung nicht mögen, können
git reset
Sie einen temporären Zweig erstellen, in dem Sie das zurückgesetzte Commit erstellen. Am Ende löschen Sie den temporären Zweig.quelle
Verwenden Sie die interaktive Basis, um die Commits zu entfernen, die Sie nicht möchten.
Auf einem neuen Zweig "foo-merge" erstellt aus "foo":
Wenn Sie sich im Commit-Bearbeitungsmodus befinden, entfernen Sie die Zeilen mit den Debug-Commits, speichern Sie sie und beenden Sie sie aus dem Editor.
Ziehen Sie nach dem erneuten Basieren einfach foo-merge in master:
quelle
Ich hatte Erfolg mit:
Wo
SHA
ist das Commit, das Sie entfernen möchten?über http://sethrobertson.github.io/GitFixUm/fixup.html#remove_deep
quelle