nehme an Sie haben das folgende Szenario:
* 1bd2200 (HEAD, master) another commit
* d258546 bad commit
* 0f1efa9 3rd commit
* bd8aa13 2nd commit
* 34c4f95 1st commit
Wo Sie d258546 heißt "bad commit" entfernen möchten.
Sie sollen einen interaktiven rebase versuchen, es zu entfernen: git rebase -i 34c4f95
dann Standard-Editor wird mit so etwas wie dieses Pop:
pick bd8aa13 2nd commit
pick 0f1efa9 3rd commit
pick d258546 bad commit
pick 1bd2200 another commit
# Rebase 34c4f95..1bd2200 onto 34c4f95
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
entfernen Sie die Zeile mit dem Commit Sie entfernen lassen möchten, und speichern + beenden Sie den Editor:
pick bd8aa13 2nd commit
pick 0f1efa9 3rd commit
pick 1bd2200 another commit
...
git wird fortgesetzt, um diese aus dem Verlauf zu entfernen begehen so etwas wie dieses zu verlassen (die Hash-Änderung in der Zusammenarbeit ausmacht mmits Nachkomme von der Abnehm begehen):
* 34fa994 (HEAD, master) another commit
* 0f1efa9 3rd commit
* bd8aa13 2nd commit
* 34c4f95 1st commit
Jetzt, da nehme ich an, dass Sie bereits die schlechte begehen Gitlab gedrückt, müssen Sie Ihr Diagramm in das Repository (aber mit der -f
Option repush es zu verhindern aufgrund einer nicht schnellforwardable Geschichte, dh git push -f <your remote> <your branch>
)
Bitte seien Sie besonders vorsichtig und stellen Sie sicher, dass keine Mitarbeiter die Geschichte mit dem "schlechten Commit" in ihren Filialen bereits verwendet.
Alternative Option:
Anstatt die Geschichte neu zu schreiben, können Sie einfach erstellen Sie eine neue begehen, welche die Änderungen durch Ihre schlechte eingeführt negiert verpflichten, dies zu tun, nur git revert <your bad commit hash>
eingeben. Diese Option ist vielleicht nicht so sauber, aber viel sicherer (falls Sie nicht genau wissen, was Sie mit einer interaktiven Rebase machen).
Haben Sie das Commit auf Ihren Gitlab-Server geschoben? – marcusshep
@marcusshep ja! – mhery
Da @ Álvaro-p auf einen Kommentar nach seiner Antwort unten erwähnt, müssen Sie (-f) erzwingen, wenn Sie drücken und auch sicherstellen, dass der Zweig in GitLab nicht geschützt ist. – user12345