Es sagt:
Wenn Sie den Editor speichern und beenden, werden Sie zum letzten Commit in dieser Liste zurückgespult und in der Befehlszeile mit der folgenden Meldung abgelegt:
$ git rebase -i HEAD~3
Stopped at 7482e0d... updated the gemspec to hopefully work better
You can amend the commit now, with
Es bedeutet nicht:
tippe nochmal git rebase -i HEAD~3
Versuchen Sie, beim Beenden des Editors nicht zu tippen git rebase -i HEAD~3
, und es sollte gut funktionieren.
(Andernfalls ist in Ihrer speziellen Situation git rebase -i --abort
möglicherweise ein erforderlich, um alles zurückzusetzen und es Ihnen zu ermöglichen, es erneut zu versuchen.)
Wie Dave Vogt in den Kommentaren erwähnt, git rebase --continue
geht es darum, mit der nächsten Aufgabe im Rebasing-Prozess fortzufahren, nachdem Sie das erste Commit geändert haben .
Auch Gregg Lind erwähnt in seiner Antwort das reword
Kommandogit rebase
:
Durch Ersetzen des Befehls "pick" durch den Befehl "edit" können Sie festlegen git rebase
, dass nach dem Anwenden dieses Commits angehalten werden soll, damit Sie die Dateien und / oder die Commit-Nachricht bearbeiten, das Commit ändern und die Neubasierung fortsetzen können.
Wenn Sie nur die pick
reword
Festschreibungsnachricht für eine Festschreibung bearbeiten möchten, ersetzen Sie den Befehl " " durch den Befehl " " seit Git1.6.6 (Januar 2010) .
Es macht dasselbe wie ' edit
' während einer interaktiven Rebase, außer dass Sie nur die Commit-Nachricht bearbeiten können, ohne die Kontrolle an die Shell zurückzugeben . Dies ist äußerst nützlich.
Derzeit müssen Sie Folgendes tun, wenn Sie Ihre Commit-Nachrichten bereinigen möchten:
$ git rebase -i next
Stellen Sie dann alle Commits auf "Bearbeiten". Dann auf jedem:
# Change the message in your editor.
$ git commit --amend
$ git rebase --continue
Wenn Sie ' reword
' anstelle von ' edit
' verwenden, können Sie die git-commit
und git-rebase
Anrufe überspringen .
git rebase --continue
geht in die nächste Aufgabe in der Rebasing Prozess, nachdem Sie geändert haben die erste begehen.Wie Gregg Lind vorgeschlagen hat, können Sie das Umwort verwenden , um aufgefordert zu werden, nur die Festschreibungsnachricht zu ändern (und die Festschreibungsnachricht ansonsten intakt zu lassen):
Hier
n
ist die Liste der letzten n Commits.Wenn Sie beispielsweise verwenden
git rebase -i HEAD~4
, wird möglicherweise Folgendes angezeigt:Ersetzen Sie nun pick durch reword für die Commits, für die Sie die Nachrichten bearbeiten möchten:
Beenden Sie den Editor nach dem Speichern der Datei. Als Nächstes werden Sie aufgefordert, die Nachrichten für die Commits, die Sie als umformuliert markiert haben , in einer Datei pro Nachricht zu bearbeiten . Beachten Sie, dass es nur bearbeiten viel einfacher haben gewesen wäre , die Nachrichten zu begehen , wenn Sie ersetzt
pick
mitreword
, aber das hat keine Wirkung zu tun.Weitere Informationen finden Sie auf der GitHub-Seite zum Ändern einer Commit-Nachricht .
quelle
FWIW, Git Rebase Interactive hat jetzt eine "Reword" -Option, die dies viel weniger schmerzhaft macht!
quelle
reword
Warum können Sie bei Verwendung von git nicht einfach die Festschreibungsnachrichten in dieser Datei mit der Liste der Festschreibungen bearbeiten? Stattdessen wird der Editor mit einer Commit-Nachrichtendatei proreword
Zeile gestartet . Dies ist nur unnötig. Selbst wenn andere Aktionen alspick
oderreword
das Starten externer Befehle erforderlichreword
wären , wäre dies nicht erforderlich.Ich wollte nur eine andere Option dafür bereitstellen. In meinem Fall arbeite ich normalerweise an meinen einzelnen Niederlassungen und verschmelze sie dann zum Master. Die einzelnen Commits, die ich für meine lokale Niederlassung mache, sind nicht so wichtig.
Aufgrund eines Git-Hooks, der auf Jira nach der entsprechenden Ticketnummer sucht, aber zwischen Groß- und Kleinschreibung unterscheidet, wurde ich daran gehindert, meinen Code zu pushen. Außerdem wurde das Commit vor langer Zeit durchgeführt und ich wollte nicht zählen, wie viele Commits auf die Rebase zurückgesetzt werden sollen.
Ich habe also einen neuen Zweig aus dem neuesten Master erstellt und alle Commits aus dem Problemzweig zu einem einzigen Commit für einen neuen Zweig zusammengefasst. Es war einfacher für mich und ich denke, es ist eine gute Idee, es hier als zukünftige Referenz zu haben.
Vom neuesten Meister:
Dann
Referenz: https://github.com/rotati/wiki/wiki/Git:-Combine-all-messy-commits-into-one-commit-before-merging-to-Master-branch
quelle
rebase -i
ungefähr 2 Stunden lang Probleme und keinen Erfolg. Mein Commit lag hinter 18 Commits, also können Sie sich vorstellen. Dies war der einfachere und praktischere Weg, den ich finden konnte, ohne Rebase verwenden zu müssen. Danke Freund!Hier ist eine sehr schöne Übersicht, die alle möglichen Fälle abdeckt: https://gist.github.com/nepsilon/156387acf9e1e72d48fa35c4fabef0b4
Überblick:
quelle