Also arbeite ich mit anderen Leuten an einem Projekt und es werden mehrere Github-Gabeln bearbeitet. Jemand hat gerade ein Problem behoben und ich habe mich mit seiner Gabel zusammengeschlossen, aber dann wurde mir klar, dass ich eine bessere Lösung finden konnte. Ich möchte das soeben vorgenommene Commit zurücksetzen. Ich habe versucht, dies mit zu tun, git revert HEAD
aber es gab mir diesen Fehler:
fatal: Commit <SHA1> ist eine Zusammenführung, es wurde jedoch keine Option -m angegeben.
Was bedeutet das? Beim Zusammenführen und Festschreiben habe ich die Option -m verwendet, um "Zusammengeführt mit <Benutzername>" zu sagen.
Was mache ich hier falsch?
quelle
git cat-file -p [MERGE_COMMIT_ID]
zeigt die übergeordneten Zweige der Reihe nach an. Der erste wäre-m 1
der zweite-m 2
.git revert [HASH] -m 2
sagt mir Auf Zweig 1.x-1.x gibt es nichts zu festschreiben, Arbeitsverzeichnis sauber, aber mein Festschreiben wird nicht zurückgesetzt.Angenommen, der andere Typ hat eine Leiste über foo erstellt, aber Sie haben in der Zwischenzeit baz erstellt und sich dann zusammengeschlossen, um eine Geschichte von zu geben
Hinweis: Git Lola ist ein nicht standardmäßiger, aber nützlicher Alias.
Keine Würfel mit
git revert
:Charles Bailey gab wie immer eine ausgezeichnete Antwort . Verwenden
git revert
wie ineffektiv löscht
bar
und produziert eine Geschichte vonAber ich vermute, Sie möchten das Merge-Commit wegwerfen :
Wie im Handbuch dokumentiert
git rev-parse
Vor dem Aufrufen
git reset
warHEAD^
(oderHEAD^1
) also b7e7176 undHEAD^2
war c7256de, dh der erste und der zweite Elternteil des Merge-Commits.Seien Sie vorsichtig,
git reset --hard
da dies die Arbeit zerstören kann.quelle
lola
Ihre Git-Befehle zu ergänzen:git config --global alias.lola "log --graph --decorate --pretty=oneline --abbrev-commit --all"
Ich hatte dieses Problem. Die Lösung bestand darin, das Commit-Diagramm (mit gitk) zu überprüfen und festzustellen, dass ich Folgendes hatte:
Ich verstehe jetzt, dass ich tun möchte
Dies liegt daran, dass
-m 1
die Zusammenführung auf der Grundlage des gemeinsamen übergeordneten-m 2
Elements erfolgen würde, wobei die Zusammenführung auf der Grundlage des Zweigs y diejenige ist, für die ich eine Auswahl treffen möchte.quelle
git-revert
, worum es bei dieser Frage geht.-m
Option, nicht ausschließlich umgit merge
. Das heißt, die Gründe für die Verwendung der-m
Option scheinen für Reverts und Cherry-Picks ähnlich zu sein. Wenn das nicht stimmt, lassen Sie es uns bitte wissen. Da ich keine anderen Fragen gefunden habe, die sich speziell mit der Verwendung von Kirschen befassen, danke für diese Antwort, die wahrscheinlich dazu geführt hat, dass Google mir geholfen hat, diese Frage und nützliche, relevante Diskussion zu finden!