Ich habe das Falsche in eine Commit-Nachricht geschrieben.
Wie kann ich die Nachricht ändern? Das Commit wurde noch nicht verschoben.
git
git-commit
git-rewrite-history
amend
Laurie Young
quelle
quelle
Antworten:
Ändern der neuesten Festschreibungsnachricht
öffnet Ihren Editor und ermöglicht es Ihnen, die Commit-Nachricht des letzten Commits zu ändern. Darüber hinaus können Sie die Festschreibungsnachricht direkt in der Befehlszeile festlegen mit:
… Dies kann jedoch die Eingabe von mehrzeiligen Festschreibungsnachrichten oder kleinen Korrekturen erschweren.
Stellen Sie sicher, dass Sie keine Änderungen an Arbeitskopien vorgenommen haben , bevor Sie dies tun. Andernfalls werden sie auch festgeschrieben. ( Nicht bereitgestellte Änderungen werden nicht festgeschrieben.)
Ändern der Nachricht eines Commits, das Sie bereits an Ihren Remote-Zweig gesendet haben
Wenn Sie Ihr Commit bereits auf Ihren Remote-Zweig übertragen haben, müssen Sie nach dem lokalen Ändern Ihres Commits (wie oben beschrieben) auch das Push-Commit erzwingen mit:
Warnung: Durch Force-Push wird der Remote-Zweig mit dem Status Ihres lokalen Zweigs überschrieben . Wenn es Commits auf dem Remote - Zweig sind , dass Sie nicht in Ihrem lokalen Niederlassung haben, Sie werden diese Commits verlieren.
Warnung: Seien Sie vorsichtig bei der Änderung von Commits, die Sie bereits mit anderen Personen geteilt haben. Zur Änderung der Commits im Wesentlichen umschreibt sie anders haben SHA - IDs, die ein Problem darstellt , wenn andere Leute haben Kopien der alten verpflichten , dass Sie neu geschrieben haben. Jeder, der über eine Kopie des alten Commits verfügt, muss seine Arbeit mit Ihrem neu geschriebenen Commit synchronisieren, was manchmal schwierig sein kann. Stellen Sie daher sicher, dass Sie sich mit anderen koordinieren, wenn Sie versuchen, den Verlauf des gemeinsam genutzten Commits neu zu schreiben, oder vermeiden Sie es einfach, gemeinsam genutzte Commits neu zu schreiben insgesamt.
Führen Sie eine interaktive Rebase durch
Eine weitere Option ist die Verwendung der interaktiven Rebase. Auf diese Weise können Sie jede Nachricht bearbeiten, die Sie aktualisieren möchten, auch wenn es sich nicht um die neueste Nachricht handelt.
Gehen Sie folgendermaßen vor, um einen Git-Squash zu erstellen:
Sobald Sie Ihre Commits gequetscht haben, wählen Sie die
e/r
zum Bearbeiten der Nachricht:Wichtiger Hinweis zur interaktiven Rebase
Wenn Sie verwenden,
git rebase -i HEAD~n
kann es mehr als n Commits geben. Git "sammelt" alle Commits in den letzten n Commits, und wenn irgendwo zwischen diesem Bereich eine Zusammenführung stattgefunden hat, werden auch alle Commits angezeigt, sodass das Ergebnis n + ist.Guter Tipp:
Wenn Sie dies für mehr als einen Zweig tun müssen und beim Ändern des Inhalts möglicherweise Konflikte auftreten, richten
git rerere
Sie Git ein und lassen Sie diese Konflikte automatisch für Sie lösen.Dokumentation
git-commit (1) Handbuchseite
git-rebase (1) Handbuchseite
git-push (1) Handbuchseite
quelle
git commit --amend
Ist jedoch nicht so mächtig wiegit rebase -i
.git commit --amend
können die (a?) Meister reparieren begehen.git push -f origin branchname
git push -f
ein bisschen gefährlich, wenn andere Leute das gleiche Repository verwenden?git commit --amend -c HEAD
. Dadurch wird der Editor geöffnet, der mit Ihrer alten Festschreibungsnachricht gefüllt ist, sodass Sie sie ändern können.quelle
Wenn das Commit, das Sie beheben möchten, nicht das aktuellste ist:
git rebase --interactive $parent_of_flawed_commit
Wenn Sie mehrere fehlerhafte Commits beheben möchten, übergeben Sie das übergeordnete Element des ältesten.
Es erscheint ein Editor mit einer Liste aller Commits seit dem von Ihnen angegebenen.
pick
zureword
(oder bei alten Versionen von Git zuedit
).Für jedes Commit, das Sie umformulieren möchten, werden Sie von Git wieder in Ihren Editor verschoben . Für jedes Commit, das Sie bearbeiten möchten , werden Sie von Git in die Shell eingefügt. Wenn Sie in der Shell sind:
git commit --amend
git rebase --continue
Der größte Teil dieser Sequenz wird Ihnen durch die Ausgabe der verschiedenen Befehle erklärt. Es ist sehr leicht; Sie müssen es sich nicht merken - denken
git rebase --interactive
Sie daran, dass Sie Commits korrigieren können, egal wie lange sie her sind.Beachten Sie, dass Sie Commits, die Sie bereits gepusht haben, nicht ändern möchten. Oder vielleicht doch, aber in diesem Fall müssen Sie sehr vorsichtig sein, um mit allen zu kommunizieren, die möglicherweise Ihre Verpflichtungen eingegangen sind und darüber gearbeitet haben. Wie kann ich wiederherstellen / neu synchronisieren, nachdem jemand eine Rebase oder ein Reset in einen veröffentlichten Zweig verschoben hat?
quelle
reword
anstelle vonpick
die Protokollnachricht bearbeiten.$parent_of_flawed_commit
gleichbedeutend mit$flawed_commit^
.-p
(--preserve-merges
), wenn nach dem fehlerhaften Commit eine Zusammenführung stattgefunden hat.Um das vorherige Commit zu ändern, nehmen Sie die gewünschten Änderungen vor, führen Sie diese Änderungen durch und führen Sie sie aus
Dadurch wird eine Datei in Ihrem Texteditor geöffnet, die Ihre neue Festschreibungsnachricht darstellt. Es beginnt mit dem Text aus Ihrer alten Festschreibungsnachricht. Ändern Sie die Festschreibungsnachricht wie gewünscht, speichern Sie die Datei und beenden Sie den Editor, um den Vorgang abzuschließen.
Führen Sie aus, um das vorherige Commit zu ändern und dieselbe Protokollnachricht beizubehalten
Führen Sie aus, um das vorherige Commit durch vollständiges Entfernen zu beheben
Wenn Sie mehr als eine Festschreibungsnachricht bearbeiten möchten, führen Sie sie aus
(Ersetzen Sie commit_count durch die Anzahl der Commits, die Sie bearbeiten möchten.) Dieser Befehl startet Ihren Editor. Markieren Sie das erste Commit (das Sie ändern möchten) als "Bearbeiten" anstelle von "Auswählen", speichern Sie den Editor und beenden Sie ihn. Nehmen Sie die Änderung vor, die Sie festschreiben möchten, und führen Sie sie dann aus
Hinweis: Sie können die gewünschte Änderung auch über den von geöffneten Editor vornehmen
git commit --amend
quelle
git rebase -i HEAD~commit_count
Außerdem können Sie die Festschreibungsnachrichten für beliebig viele Festschreibungen ändern. Markieren Sie einfach die ausgewählten Commits als "Reword" anstelle von "Pick".git reset --hard
vernichtet nicht festgeschriebene Änderungen. Bitte ersetzen Sie--hard
mit--soft
.git reset --hard
ist ein absolut legitimer Befehl, aber angesichts der Frage irreführend. Sie verwenden,--hard
wenn Sie Änderungen festgeschrieben haben, die Sie wegwerfen möchten, und nicht, wenn Sie in der Festschreibungsnachricht einen Tippfehler gemacht haben!Wie bereits erwähnt,
git commit --amend
ist dies der Weg, um das letzte Commit zu überschreiben. Ein Hinweis: Wenn Sie die Dateien auch überschreiben möchten, lautet der Befehlquelle
git add file.ext
dann nurgit commit --amend
Sie können auch dafür verwenden
git filter-branch
.Es ist nicht so einfach wie ein Trivial
git commit --amend
, aber es ist besonders nützlich, wenn Sie nach Ihrer fehlerhaften Festschreibungsnachricht bereits einige Zusammenführungen haben.Beachten Sie, dass dies versucht, jedes Commit zwischen
HEAD
und das fehlerhafte Commit neu zu schreiben , daher sollten Sie Ihrenmsg-filter
Befehl mit Bedacht auswählen ;-)quelle
$flawed_commit^..HEAD
nicht$flawed_commit..HEAD
. wie in der Manpage angegeben: « Der Befehl schreibt nur die in der Befehlszeile genannten positiven Verweise neu (z. B. wenn Sie a..b übergeben, wird nur b neu geschrieben). »Ich bevorzuge diesen Weg:
Andernfalls erfolgt ein neues Commit mit einer neuen Commit-ID.
quelle
-c
macht ein paar Dinge. Standardmäßig wird die alte Nachricht verwendet, es werden jedoch auch Informationen zur Urheberschaft (Person und Zeit) kopiert.-C
macht dasselbe, außer dass Sie nicht aufgefordert werden, die Nachricht zu bearbeiten.fatal: Option -m cannot be combined with -c/-C/-F/--fixup.
Wenn Sie das Git-GUI-Tool verwenden, gibt es eine Schaltfläche mit dem Namen Letzte Festschreibung ändern . Klicken Sie auf diese Schaltfläche, um Ihre letzten Festschreibungsdateien und Nachrichten anzuzeigen. Bearbeiten Sie einfach diese Nachricht, und Sie können sie mit einer neuen Festschreibungsnachricht festschreiben.
Oder verwenden Sie diesen Befehl von einer Konsole / einem Terminal aus:
quelle
Sie können Git Rebasing verwenden . Wenn Sie beispielsweise zurück ändern möchten, um bbc643cd festzuschreiben, führen Sie aus
Ändern Sie im Standardeditor "Auswählen" in "Bearbeiten" in der Zeile, deren Commit Sie ändern möchten. Nehmen Sie Ihre Änderungen vor und inszenieren Sie sie dann mit
Jetzt können Sie verwenden
um das Commit zu ändern, und danach
um zum vorherigen Head Commit zurückzukehren.
quelle
git commit --amend
wirksam wurde, können Sie sie verwendengit show
und die neue Nachricht wird angezeigt.Wenn Sie nur Ihre letzte Festschreibungsnachricht ändern möchten, gehen Sie wie folgt vor:
Dadurch werden Sie in Ihren Texteditor eingefügt und können die letzte Festschreibungsnachricht ändern.
Wenn Sie die letzten drei Festschreibungsnachrichten oder eine der Festschreibungsnachrichten bis zu diesem Punkt ändern möchten, geben Sie
HEAD~3
den folgendengit rebase -i
Befehl ein:quelle
git commit --amend
, und es sagt auch , dass Sie verwenden könnengit rebase -i HEAD~commit_count
, alles , was Sie taten , war Plug in3
fürcommit_count
.Wenn Sie eine alte Festschreibungsnachricht über mehrere Zweige hinweg ändern müssen (dh das Festschreiben mit der fehlerhaften Nachricht ist in mehreren Zweigen vorhanden), möchten Sie möglicherweise Folgendes verwenden:
Git erstellt ein temporäres Verzeichnis zum Umschreiben und sichert zusätzlich alte Referenzen in
refs/original/
.-f
erzwingt die Ausführung der Operation. Dies ist erforderlich, wenn das temporäre Verzeichnis bereits vorhanden ist oder wenn bereits Referenzen unter gespeichert sindrefs/original
. Ist dies nicht der Fall, können Sie dieses Flag löschen.--
trennt Filterverzweigungsoptionen von Revisionsoptionen.--all
stellt sicher, dass alle Zweige und Tags neu geschrieben werden.Aufgrund der Sicherung Ihrer alten Referenzen können Sie problemlos zum Status zurückkehren, bevor Sie den Befehl ausführen.
Angenommen, Sie möchten Ihren Master wiederherstellen und im Zweig darauf zugreifen
old_master
:quelle
git commit --amend
, um Kommentare zu korrigieren oder Dateien hinzuzufügen, die ich vergessen habegit add
, aber immer, bevor ich sie bearbeitet habegit push
. Ich benutze es auch,git filter-branch
wenn ich mich total mit dem Versionsverlauf anlegen möchte, aber das OP will das nicht, deshalb braucht diese Antwort eine große Gesundheitswarnung - versuche das nicht zu Hause, guck mal !!Verwenden
Um es im Detail zu verstehen, ist ein ausgezeichneter Beitrag 4. Git History neu schreiben . Es wird auch darüber gesprochen, wann nicht verwendet werden soll
git commit --amend
.quelle
git commit --amend
Antwort wurde bereits (mehrmals) gegeben, bevor Sie Ihre geschrieben haben. Warum hast du es wieder gepostet? Wenn Sie einen Link zu "Rewriting Git History" hinzufügen möchten, können Sie eine der vorhandenen Antworten bearbeiten oder einen Kommentar hinterlassen.Ändern
Sie haben hier einige Möglichkeiten. Du kannst tun
solange es dein letztes Commit ist.
Interaktive Rebase
Andernfalls können Sie eine interaktive Rebase durchführen, wenn dies nicht Ihr letztes Commit ist.
Dann fügen Sie innerhalb der interaktiven Rebase diesem Commit einfach eine Bearbeitung hinzu. Wenn es angezeigt wird, führen Sie eine
git commit --amend
und ändern Sie die Festschreibungsnachricht. Wenn Sie vor diesem Festschreibungspunkt ein Rollback durchführen möchten, können Sie dieses Festschreiben auch verwendengit reflog
und einfach löschen. Dann machst du einfachgit commit
nochmal einen.quelle
Wenn es Ihr letztes Commit ist, ändern Sie einfach das Commit:
(Verwenden Sie das Flag
-o
(--only
), um sicherzustellen, dass Sie nur die Festschreibungsnachricht ändern.)Wenn es sich um ein vergrabenes Commit handelt, verwenden Sie die fantastische interaktive Rebase :
Suchen Sie das gewünschte Commit, ändern Sie es
pick
inr
(reword
) und speichern und schließen Sie die Datei. Erledigt!Miniatur-Vim-Tutorial (oder wie man mit nur 8 Tastenanschlägen neu basiert
3j
cw
r
EscZZ
):vimtutor
Sie, wenn Sie Zeit habenh
j
k
l
Bewegungstasten entsprechen ←↓↑→3j
drei Zeilen nach unteni
Um in den Einfügemodus zu gelangen, wird der von Ihnen eingegebene Text in der Datei angezeigtc
um den Einfügemodus zu verlassen und zum "normalen" Modus zurückzukehrenu
rückgängig machenr
wiederholendd
,dw
,dl
Um eine Linie, ein Wort oder Buchstaben zu löschen, bzw.cc
,cw
,cl
Um eine Linie, ein Wort oder Buchstaben zu ändern, bzw. (gleich wiedd
i
)yy
,yw
,yl
Zu kopieren ( „Ruck“) , um eine Linie, ein Wort oder Buchstaben bzw.p
oderP
nach bzw. vor der aktuellen Position einfügen:w
Enter eine Datei speichern (schreiben):q!
Enter ohne zu speichern zu beenden:wq
EnteroderZZ
zu speichern und zu beendenWenn Sie häufig Text bearbeiten, wechseln Sie zum Dvorak-Tastaturlayout , lernen Sie das Tippen und lernen Sie Vim. Lohnt sich die Mühe? Ja.
ProTip ™: Haben Sie keine Angst, mit "gefährlichen" Befehlen zu experimentieren, die den Verlauf neu schreiben. * - Git löscht Ihre Commits standardmäßig 90 Tage lang nicht. Sie finden sie im Reflog:
* Achten Sie auf Optionen wie
--hard
und--force
obwohl - sie können Daten verwerfen. * Schreiben Sie den Verlauf auch nicht in Zweigen neu, in denen Sie zusammenarbeiten.quelle
nano
? Wir sprechen von trivialen Änderungen, die an einer Textdatei vorgenommen werden müssen, nicht von Hardcore-Codierung, die einen Flammenkrieg um den "besten" Texteditor erzeugen würde.ddjjpZZ
ein Commit 2 nach unten verschoben . Das grundlegende Vim-Wissen ist nichts Arkanes. Es dauert 10 Minuten, um sich mit Vim besser vertraut zu machen als mit Nano.Wenn Sie die Git-GUI verwenden, können Sie das letzte Commit ändern, mit dem nicht gepusht wurde:
quelle
Ich benutze die Git-GUI so oft ich kann, und das gibt dir die Möglichkeit, das letzte Commit zu ändern:
Außerdem gibt
git rebase -i origin/master
es ein nettes Mantra, das Ihnen immer die Commits präsentiert, die Sie zusätzlich zum Master ausgeführt haben, und Ihnen die Möglichkeit gibt, Änderungen vorzunehmen, zu löschen, neu zu ordnen oder zu quetschen. Sie müssen diesen Hash nicht zuerst in die Hand nehmen.quelle
Wow, es gibt viele Möglichkeiten, dies zu tun.
Eine weitere Möglichkeit besteht darin, das letzte Commit zu löschen, die Änderungen jedoch beizubehalten, damit Sie Ihre Arbeit nicht verlieren. Sie können dann mit der korrigierten Nachricht ein weiteres Commit durchführen. Das würde ungefähr so aussehen:
Ich mache das immer, wenn ich vergesse, eine Datei hinzuzufügen oder eine Änderung vorzunehmen.
Denken Sie daran,
--soft
anstelle von anzugeben--hard
, da Sie sonst das Commit vollständig verlieren.quelle
git commit --amend
Ausnahme, dass es sich um einen zweistufigen Prozess handelt.--amend
behält die Autoreninformationen bei, aber die Frage fragt nur, ob die Nachricht geändert werden soll.Für alle, die nach einer Windows / Mac-Benutzeroberfläche suchen, die beim Bearbeiten älterer Nachrichten (dh nicht nur der neuesten Nachricht) hilft , würde ich Sourcetree empfehlen . Die folgenden Schritte sind unten aufgeführt.
Für Commits, die noch nicht auf eine Fernbedienung übertragen wurden:
Unable to create 'project_path/.git/index.lock': File exists.
wenn versucht wird, mehrere Festschreibungsnachrichten gleichzeitig zu ändern. Sie sind sich nicht sicher, um welches Problem es sich handelt oder ob es in einer zukünftigen Version von Sourcetree behoben wird. In diesem Fall wird jedoch empfohlen, sie einzeln neu zu starten (langsamer, aber zuverlässiger).... oder ... für Commits, die bereits verschoben wurden:
Befolgen Sie die Schritte in dieser Antwort , die den obigen ähnlich sind, für die jedoch ein weiterer Befehl über die Befehlszeile (
git push origin <branch> -f
) ausgeführt werden muss, um den Zweig zwangsweise zu drücken. Ich würde empfehlen, alles zu lesen und die notwendige Vorsicht walten zu lassen!quelle
Wenn Sie nur das letzte Commit bearbeiten möchten, verwenden Sie:
oder
Wenn Sie jedoch mehrere Commits hintereinander bearbeiten möchten, sollten Sie stattdessen die Neubasierung verwenden:
Schreiben Sie in eine Datei wie die oben beschriebene
edit/e
oder eine der anderen Optionen und klicken Sie auf Speichern und beenden.Jetzt sind Sie beim ersten falschen Commit. Nehmen Sie Änderungen an den Dateien vor, und diese werden automatisch für Sie bereitgestellt. Art
Speichern und beenden Sie das und geben Sie ein
um zur nächsten Auswahl zu gelangen, bis alle Ihre Auswahlen abgeschlossen sind.
Beachten Sie, dass diese Dinge alle Ihre SHA-Hashes nach diesem bestimmten Commit ändern.
quelle
Wenn Sie nur Ihre letzte Nachricht ändern möchten, sollten Sie das
--only
Flag oder dessen Verknüpfung verwenden-o
mitcommit --amend
:Dies stellt sicher, dass Sie Ihr Commit nicht versehentlich durch inszenierte Inhalte verbessern. Natürlich ist es am besten, eine richtige
$EDITOR
Konfiguration zu haben . Dann können Sie die-m
Option weglassen, und Git füllt die Commit-Nachricht mit der alten vor. Auf diese Weise kann es leicht bearbeitet werden.quelle
git commit --amend
. Die Frage war sehr spezifisch, daher länger! = Besser. Die entscheidende Erwähnung der-o
Flagge würde wahrscheinlich im Rest der Informationen vergraben sein. Ich bin auch nicht zufrieden damit, eine Antwort zu bearbeiten, die bereits so viele Stimmen hat.--only
Option mit--amend
seit Git 1.3.0 verfügbar ist, hat sie nicht richtig funktioniert, bis sie in 1.7.11.3 ( ea2d4ed35902ce15959965ab86d80527731a177c ) behoben wurde . Die richtige Antwort im Jahr 2008 wäre also wahrscheinlich so gewesen :git stash; git commit --amend; git stash pop
.Aktualisieren Sie Ihre letzte falsche Festschreibungsnachricht mit der neuen Festschreibungsnachricht in einer Zeile:
Oder versuchen Sie es mit einem Git-Reset wie folgt:
Verwenden von Reset zum Aufteilen von Commits in kleinere Commits
git reset
kann Ihnen helfen, ein Commit auch in mehrere Commits aufzuteilen:Hier haben Sie Ihr letztes Commit erfolgreich in zwei Commits aufgeteilt.
quelle
git commit --amend
, genau wie es in der Antwort mit der höchsten Abstimmung steht . Funktioniert außerdemgit reset --soft HEAD^
identisch mit dem Soft-Reset in dieser früheren Antwort , da beide auf das erste übergeordnete Commit zurückgesetzt werden.git reset
die Lösung hinzuzufügen , um eine Idee zu geben, eine Commit-Nachricht in mehrere Commit-Nachrichten aufzuteilen. Weil ich mit diesem Problem konfrontiert war, als ich anfing, es zu benutzengit
. Manchmal kann dies sehr hilfreich sein. :)Auf diese Frage gibt es viele Antworten, aber keine erklärt ausführlich, wie ältere Commit-Nachrichten mit Vim geändert werden können . Ich war festgefahren, dies selbst zu tun, deshalb werde ich hier detailliert aufschreiben, wie ich dies speziell für Leute getan habe, die keine Erfahrung in Vim haben!
Ich wollte meine fünf letzten Commits ändern, die ich bereits auf den Server übertragen habe. Dies ist ziemlich "gefährlich", denn wenn jemand anderes bereits davon profitiert hat, können Sie die Dinge durcheinander bringen, indem Sie die Festschreibungsnachrichten ändern. Wenn Sie jedoch an Ihrem eigenen kleinen Zweig arbeiten und sicher sind, dass niemand daran gezogen hat, können Sie ihn folgendermaßen ändern:
Angenommen, Sie möchten Ihre fünf letzten Commits ändern und geben dies dann in das Terminal ein:
* Wobei 5 die Anzahl der Festschreibungsnachrichten ist, die Sie ändern möchten (wenn Sie also die 10. bis zur letzten Festschreibung ändern möchten, geben Sie 10 ein).
Mit diesem Befehl gelangen Sie zu Vim. Dort können Sie Ihren Commit-Verlauf bearbeiten. Oben sehen Sie Ihre letzten fünf Commits wie folgt:
Stattdessen
pick
musst du schreibenreword
. Sie können dies in Vim tun, indem Sie eingebeni
. Dadurch gelangen Sie in den Einfügemodus . (Sie sehen, dass Sie sich im Einfügemodus befinden, indem Sie das Wort INSERT unten verwenden.) Geben Sie für die Commits, die Sie ändern möchten,reword
anstelle von einpick
.Dann müssen Sie diesen Bildschirm speichern und beenden. Sie tun dies, indem Sie zuerst durch Drücken der EscTaste in den Befehlsmodus wechseln (Sie können überprüfen, ob Sie sich im Befehlsmodus befinden, wenn das Wort INSERT unten verschwunden ist). Dann können Sie einen Befehl durch Eingabe eingeben
:
. Der Befehl zum Speichern und Beenden lautetwq
. Wenn Sie also eingeben, sind:wq
Sie auf dem richtigen Weg.Dann geht Vim jede Commit-Nachricht durch, die Sie umformulieren möchten, und hier können Sie die Commit-Nachrichten tatsächlich ändern. Sie tun dies, indem Sie in den Einfügemodus wechseln, die Festschreibungsnachricht ändern, in den Befehlsmodus wechseln und speichern und beenden. Tun Sie dies fünf Mal und Sie sind aus Vim!
Wenn Sie Ihre falschen Commits bereits gepusht haben, müssen Sie
git push --force
sie überschreiben. Denken Sie daran, dass diesgit push --force
eine ziemlich gefährliche Sache ist. Stellen Sie also sicher, dass niemand vom Server gezogen wird, da Sie Ihre falschen Commits ausgeführt haben!Jetzt haben Sie Ihre Commit-Nachrichten geändert!
(Wie Sie sehen, bin ich in Vim nicht so erfahren. Wenn ich also den falschen Jargon verwendet habe, um zu erklären, was passiert, können Sie mich gerne korrigieren!)
quelle
<nitpick>
Es gibt keine "Threads" zu Stack Overflow, da es sich nicht um ein Diskussionsforum handelt, sondern nur um "Fragen", "Antworten" und "Beiträge".</nitpick>
. Außerdem sind nicht alle Versionen von Vim gleich. Mit nicht allen können Sie Zeichen im Einfügemodus löschen (macht in gewisser Weise Sinn, oder?). Wenn Sie immer in der Lage sein möchten, Zeichen in Vim zu löschen,X
und diesx
tun wird (kleine Löschzeichenx
vor dem CursorX
werden dahinter gelöscht). Wenn Sie Fehler machen, können Sie dieseu
wiederholt zum Rückgängigmachen verwenden. Schließlichr
ist Abkürzung fürreword
im interaktiven Rebase-Editor.cw
am Anfang eingegeben (obwohl die Frage nicht vim betrifft, stimme ich zu).nano
einstellen , wie z. B. Midnight Commanders Mcedit.Sie können git-rebase-reword verwenden
Es wurde entwickelt, um jedes Commit (nicht nur das letzte) auf die gleiche Weise zu bearbeiten wie
commit --amend
Es ist nach der Aktion auf Rebase Interactive benannt, um ein Commit zu ändern: "reword". Siehe diesen Beitrag und man- Abschnitt interaktiver Modus-
Beispiele:
quelle
g c; g rb -i @~9
Folgendes eingeben : (Festschreiben und erneutes Basieren), das neue Festschreiben an die gewünschte Stelle verschieben,commit
zuf
(fixup
) ändern und speichern. Wenn Sie etwas schneller als das wollten, könnten Sie aliasgit commit --fixup=<commit>; git rebase -i --autosquash <commit>^
Ich habe die Aliase hinzugefügt
reci
undrecm
dafürrecommit (amend)
. Jetzt kann ich es machen mitgit recm
odergit recm -m
:quelle
Mir wurde klar, dass ich ein Commit mit einem Tippfehler verschoben hatte. Um rückgängig zu machen, habe ich Folgendes getan:
Warnung: Wenn Sie Ihre Änderungen erzwingen, wird der Remote-Zweig mit Ihrem lokalen Zweig überschrieben. Stellen Sie sicher, dass Sie nichts überschreiben, was Sie behalten möchten. Seien Sie auch vorsichtig, wenn Sie ein geändertes (umgeschriebenes) Commit erzwingen, wenn jemand anderes den Zweig mit Ihnen teilt, da er seinen eigenen Verlauf neu schreiben muss, wenn er die alte Kopie des Commits hat, die Sie gerade umgeschrieben haben.
quelle
Ich benutze gerne folgendes:
git status
git add --all
git commit -am "message goes here about the change"
git pull <origin master>
git push <origin master>
quelle
Wenn Sie den Code nicht in Ihren Remote-Zweig ( GitHub / Bitbucket ) übertragen haben, können Sie die Commit-Nachricht in der Befehlszeile wie folgt ändern.
Wenn Sie an einem bestimmten Zweig arbeiten, gehen Sie wie folgt vor:
Wenn Sie den Code bereits mit der falschen Nachricht gepusht haben und beim Ändern der Nachricht vorsichtig sein müssen. Das heißt, nachdem Sie die Festschreibungsnachricht geändert und erneut versucht haben, Probleme zu verursachen, treten Probleme auf. Befolgen Sie diese Schritte, um den Vorgang zu vereinfachen.
Bitte lesen Sie meine gesamte Antwort, bevor Sie es tun.
Wichtiger Hinweis: Wenn Sie den Force Push direkt verwenden, können Codeprobleme auftreten, an denen andere Entwickler in demselben Zweig arbeiten. Um diese Konflikte zu vermeiden, müssen Sie den Code aus Ihrem Zweig ziehen, bevor Sie den Force-Push ausführen :
Dies ist die beste Vorgehensweise beim Ändern der Festschreibungsnachricht, wenn diese bereits übertragen wurde.
quelle