web-dev-qa-db-ger.com

Wie ändere ich vorhandene, nicht gelöschte Commit-Nachrichten?

Ich habe das Falsche in eine Commit-Nachricht geschrieben.

Wie kann ich die Nachricht ändern? Das Commit wurde noch nicht gepusht.

7671
Laurie Young

Änderung der letzten Commit-Nachricht

_git commit --amend
_

öffnet Ihren Editor, in dem Sie die Commit-Nachricht des letzten Commits ändern können. Darüber hinaus können Sie die Festschreibungsmeldung direkt in der Befehlszeile festlegen mit:

_git commit --amend -m "New commit message"
_

Dies kann jedoch die Eingabe von mehrzeiligen Commit-Nachrichten oder kleinen Korrekturen erschweren.

Stellen Sie sicher, dass Sie keine Änderungen an der Arbeitskopie gespeichert haben , bevor Sie dies tun. Andernfalls werden sie ebenfalls festgeschrieben. ( Nicht bereitgestellte Änderungen werden nicht festgeschrieben.)

Ändern der Nachricht eines Commits, das Sie bereits an Ihre Remote-Niederlassung gesendet haben

Wenn Sie Ihr Commit bereits an Ihren Remote-Zweig gesendet haben, müssen Sie Push the commit erzwingen mit:

_git Push <remote> <branch> --force
# Or
git Push <remote> <branch> -f
_

Warnung: Durch erzwungenes Drücken wird der Remote-Zweig mit dem Status Ihres lokalen Zweigs überschrieben . Wenn es in der entfernten Niederlassung Commits gibt, die Sie in Ihrer lokalen Niederlassung nicht haben, verlieren Sie diese Commits .

Warnung: Seien Sie vorsichtig beim Ändern von Commits, die Sie bereits mit anderen geteilt haben. Das Ändern von Commits führt im Wesentlichen zu einem Umschreiben. Sie müssen unterschiedliche SHA IDs haben, was ein Problem darstellt, wenn andere Personen Kopien des alten Commits haben, das Sie umgeschrieben haben. Alle Benutzer, die über eine Kopie des alten Commits verfügen, müssen ihre Arbeit mit Ihrem neu geschriebenen Commit synchronisieren. Dies kann manchmal schwierig sein. Stellen Sie daher sicher, dass Sie sich mit anderen abstimmen, wenn Sie versuchen, den Verlauf gemeinsamer Commits neu zu schreiben, oder vermeiden Sie es, gemeinsame Commits neu zu schreiben insgesamt.


Verwenden Sie interaktive Rebase

Eine andere 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.

Um einen Git Squash zu machen, folge diesen Schritten:

_// X is the number of commits to the last commit you want to be able to edit
git rebase -i HEAD~X
_

Sobald Sie Ihre Commits gequetscht haben, wählen Sie _e/r_ zum Bearbeiten der Nachricht

enter image description here

Wichtiger Hinweis zu Interactive Rebase

Wenn Sie den _git rebase -i HEAD~X_ verwenden, kann es mehr als X Commits geben. Git "sammelt" alle Commits in den letzten X Commits und wenn es irgendwo eine Zusammenführung zwischen diesen Bereichen gab, werden auch alle Commits angezeigt, so dass das Ergebnis X + ist.

Guter Tipp:

Wenn Sie dies für mehr als einen Zweig tun müssen und beim Ändern des Inhalts Konflikte auftreten können, richten Sie git rerere ein und lassen Sie git diese Konflikte automatisch für Sie lösen.


Dokumentation

15489
EfForEffort
git commit --amend -m "your new message"
2465
lfx_cool

Wenn das zu reparierende Commit nicht das neueste ist:

  1. git rebase --interactive $parent_of_flawed_commit

    Wenn Sie mehrere fehlerhafte Commits beheben möchten, übergeben Sie das übergeordnete Element des ältesten Commits.

  2. Es erscheint ein Editor mit einer Liste aller Verpflichtungsermächtigungen seit Ihrer Verpflichtungsermächtigung.

    1. Ändern Sie pick in reword (oder in alten Versionen von Git in edit), bevor Sie Commits ausführen, die Sie korrigieren möchten.
    2. Nach dem Speichern spielt Git die aufgelisteten Commits erneut ab.

  3. Bei jedem Commit, das Sie neu formulieren möchten , werden Sie von Git wieder in Ihren Editor verschoben. Für jedes Commit, das Sie bearbeiten möchten , legt Git Sie in der Shell ab. Wenn Sie sich in der Shell befinden:

    1. Ändern Sie das Commit nach Belieben.
    2. git commit --amend
    3. git rebase --continue

Der größte Teil dieser Sequenz wird Ihnen durch die Ausgabe der verschiedenen Befehle erklärt, die Sie ausführen. Es ist sehr einfach, Sie müssen es sich nicht merken - denken Sie daran, dass Sie mit git rebase --interactive Commits korrigieren können, egal wie lange sie zurückliegen.


Beachten Sie, dass Sie Commits, die Sie bereits gepusht haben, nicht ändern möchten. Oder vielleicht tun Sie das, 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 hinaus gearbeitet haben. Wie kann ich wiederherstellen/resynchronisieren, nachdem jemand einen Rebase- oder Reset-Vorgang für einen veröffentlichten Zweig ausgeführt hat?

2342

Um das vorherige Commit zu ändern, nehmen Sie die gewünschten Änderungen vor, stellen Sie diese Änderungen bereit und führen Sie sie dann aus

git commit --amend

Dadurch wird eine Datei in Ihrem Texteditor geöffnet, die Ihre neue Festschreibungsnachricht darstellt. Es wird zunächst mit dem Text aus Ihrer alten Festschreibungsnachricht gefüllt. Ändern Sie die Festschreibungsmeldung nach Bedarf, speichern Sie die Datei und beenden Sie den Editor, um den Vorgang abzuschließen.

Führen Sie Folgendes aus, um das vorherige Commit zu ändern und dieselbe Protokollmeldung beizubehalten

git commit --amend -C HEAD

Führen Sie den folgenden Befehl aus, um das vorherige Commit zu beheben, indem Sie es vollständig entfernen

git reset --hard HEAD^

Wenn Sie mehr als eine Commit-Nachricht bearbeiten möchten, führen Sie sie aus

git rebase -i HEAD~commit_count

(Ersetzen commit_count mit der 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 es und schließen Sie den Editor. Nehmen Sie die Änderung vor, die Sie festschreiben möchten, und führen Sie sie dann aus

git commit --amend
git rebase --continue

Hinweis: Sie können die gewünschte Änderung auch in dem Editor vornehmen, der mit git commit --amend geöffnet wurde.

766
Fatih

Wie bereits erwähnt, ist git commit --amend der Weg, um das letzte Commit zu überschreiben. Ein Hinweis: Wenn Sie auch die Dateien überschreiben möchten, wäre der Befehl

git commit -a --amend -m "My new commit message"
393
John

Sie können dafür auch git filter-branch verwenden.

git filter-branch -f --msg-filter "sed 's/errror/error/'" $flawed_commit..HEAD

Es ist nicht so einfach wie ein trivialer git commit --amend, aber es ist besonders nützlich, wenn Sie bereits einige Zusammenführungen nach Ihrer fehlerhaften Festschreibungsmeldung haben.

Beachten Sie, dass hiermit versucht wird, JEDES Commit zwischen HEAD und dem fehlerhaften Commit neu zu schreiben. Wählen Sie daher Ihren Befehl msg-filter mit Bedacht aus.

352
Mark

Ich bevorzuge diesen Weg.

git commit --amend -c <commit ID>

Andernfalls wird ein neues Festschreiben mit einer neuen Festschreibungs-ID durchgeführt

313
krevedko

Wenn Sie das Git-GUI-Tool verwenden, gibt es eine Schaltfläche mit dem Namen "Letzten Commit ändern". Klicken Sie auf diese Schaltfläche und es werden Ihre letzten Commit-Dateien und Nachrichten angezeigt. Bearbeiten Sie einfach diese Nachricht und Sie können sie mit einer neuen Commit-Nachricht festschreiben.

Oder verwenden Sie diesen Befehl von einer Konsole/einem Terminal aus:

git commit -a --amend -m "My new commit message"
310
Akhilraj N S

Sie können Git rebasing verwenden. Wenn Sie beispielsweise Änderungen vornehmen möchten, um bbc643cd festzuschreiben, führen Sie Folgendes aus

$ git rebase bbc643cd^ --interactive

Ändern Sie im Standardeditor "pick" in "edit" in der Zeile, deren Commit Sie ändern möchten. Nehmen Sie Ihre Änderungen vor und inszenieren Sie sie dann mit

$ git add <filepattern>

Jetzt können Sie verwenden

$ git commit --amend

das Commit zu ändern, und danach

$ git rebase --continue

um zum vorherigen head commit zurückzukehren.

283
Shoaib Ud-Din
  1. Wenn Sie nur Ihre letzte Festschreibungsnachricht ändern möchten, gehen Sie wie folgt vor:

    git commit --amend
    

    Dadurch gelangen Sie in Ihren Text-Exitor und können die letzte Commit-Nachricht ändern.

  2. Wenn Sie die letzten 3 Festschreibungsnachrichten oder eine der Festschreibungsnachrichten bis zu diesem Zeitpunkt ändern möchten, geben Sie HEAD~3 an den Befehl git rebase -i:

    git rebase -i HEAD~3
    
276
Heena Hussain

Wenn Sie eine alte Festschreibungsnachricht über mehrere Zweige ändern müssen (d. H. Die Festschreibung mit der fehlerhaften Nachricht ist in mehreren Zweigen vorhanden), möchten Sie möglicherweise Folgendes verwenden:

git filter-branch -f --msg-filter \
'sed "s/<old message>/<new message>/g"' -- --all

Git erstellt ein temporäres Verzeichnis zum Umschreiben und sichert zusätzlich alte Referenzen in refs/original/.

  • -f erzwingt die Ausführung des Vorgangs. Dies ist notwendig, wenn das temporäre Verzeichnis bereits vorhanden ist oder wenn bereits Referenzen unter refs/original gespeichert sind. Ist dies nicht der Fall, können Sie dieses Flag löschen.

  • -- trennt Filter-Branch-Optionen von Revisionsoptionen.

  • --all stellt sicher, dass alle Äste und Tags neu geschrieben werden.

Aufgrund der Sicherung Ihrer alten Referenzen können Sie problemlos in den Status zurückkehren, bevor Sie den Befehl ausführen.

Angenommen, Sie möchten Ihren Master wiederherstellen und in Zweig old_master darauf zugreifen:

git checkout -b old_master refs/original/refs/heads/master
259
sebers

Verwenden

git commit --amend

Um es im Detail zu verstehen, ist ein ausgezeichneter Beitrag 4. Umschreiben des Git-Verlaufs. Es wird auch über gesprochen, wenn git commit --amend nicht verwendet werden soll.

224
skin

Ändern

Sie haben hier ein paar Möglichkeiten. Du kannst tun

git commit --amend

solange es dein letzter Commit ist.

Interaktive Basis

Andernfalls, wenn es nicht Ihr letzter Commit ist, können Sie eine interaktive Rebase durchführen.

git rebase -i [branched_from] [hash before commit]

Dann fügen Sie innerhalb der interaktiven Datenbank einfach eine Bearbeitung zu diesem Commit hinzu. Wenn es auftaucht, mache einen git commit --amend und ändere die Commit-Nachricht. Wenn Sie vor diesem Festschreibungspunkt ein Rollback durchführen möchten, können Sie auch git reflog verwenden und diese Festschreibung einfach löschen. Dann machst du einfach noch einmal einen git commit.

195
wallerjake

Wenn Sie die Git-GUI verwenden, können Sie das letzte Festschreiben ändern, das nicht gesendet wurde:

Commit/Amend Last Commit
183
gulchrider

Wenn es Ihr letzter Commit ist, ändern Sie einfach den Commit :

git commit --amend -o -m "New commit message"

(Verwenden des Flags -o (--only), um sicherzustellen, dass Sie nur die Festschreibungsnachricht ändern)


Wenn es sich um ein vergrabenes Commit handelt, verwenden Sie die fantastische interaktive Rebase :

git rebase -i @~9   # Show the last 9 commits in a text editor

Suchen Sie das gewünschte Commit, ändern Sie pick in r (reword) und speichern und schließen Sie die Datei. Getan!



Miniatur vim Tutorial (oder wie man mit nur 8 Tastenanschlägen rebasiert) 3jcwrEscZZ):

  • Führen Sie vimtutor aus, wenn Sie Zeit haben
  • hjkl entsprechen Bewegungstasten 
  • Allen Befehlen kann ein "Bereich" vorangestellt werden, z. 3j bewegt sich 3 Zeilen nach unten
  • i um in den Einfügemodus zu gelangen, wird der eingegebene Text in der Datei angezeigt
  • Esc oder Ctrlc um den Einfügemodus zu verlassen und zum "normalen" Modus zurückzukehren
  • u rückgängig machen
  • Ctrlr zu wiederholen
  • dddwdl um eine Zeile, ein Wort oder einen Buchstaben zu löschen
  • cccwcl um eine Zeile, ein Wort oder einen Buchstaben zu ändern (dasselbe wie ddi)
  • yyywyl um eine Zeile, ein Wort oder einen Buchstaben zu kopieren ("reißen")
  • p oder P Einfügen nach bzw. vor der aktuellen Position
  • :wEnter eine Datei speichern (schreiben)
  • :q!Enter zu beenden, ohne zu speichern
  • :wqEnter oder ZZ zu speichern und zu beenden

Wenn Sie viel Text bearbeiten, wechseln Sie zum Dvorak-Tastaturlayout, lernen Sie das Tippen und lernen Sie vim. Lohnt sich der Aufwand? 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. du findest sie im reflog:

$ git reset @~3   # go back 3 commits
$ git reflog
c4f708b [email protected]{0}: reset: moving to @~3
2c52489 [email protected]{1}: commit: more changes
4a5246d [email protected]{2}: commit: make important changes
e8571e4 [email protected]{3}: commit: make some changes
... earlier commits ...
$ git reset 2c52489
... and you're back where you started

* Achten Sie auf Optionen wie --hard und --force - sie können jedoch Daten verwerfen.
* Schreiben Sie den Verlauf auch nicht in Zweigen, in denen Sie zusammenarbeiten.

175
Zaz

Ich benutze die Git GUI so oft ich kann, und das gibt dir die Möglichkeit, das letzte Commit zu ändern:

Tick that box

Außerdem ist git rebase -i Origin/master ein nettes Mantra, das Ihnen immer die Commits präsentiert, die Sie über Master ausgeführt haben, und Ihnen die Option bietet, Änderungen, Löschungen, Neuordnungen oder Squashs vorzunehmen. Sie müssen diesen Hash nicht erst beschaffen.

165
Havard Graff

Wow, dafür gibt es viele Möglichkeiten.

Eine weitere Möglichkeit besteht darin, das letzte Commit zu löschen, die Änderungen jedoch beizubehalten, damit Sie Ihre Arbeit nicht verlieren. Anschließend können Sie die korrigierte Nachricht erneut festschreiben. Das würde ungefähr so ​​aussehen:

git reset --soft HEAD~1
git commit -m 'New and corrected commit message'

Ich mache das immer, wenn ich vergesse, eine Datei hinzuzufügen oder eine Änderung vorzunehmen.

Denken Sie daran, um --soft anstelle von --hard anzugeben, andernfalls verlieren Sie das Commit vollständig.

135
Radu Murzea

Für alle, die nach einer Windows/Mac-Benutzeroberfläche suchen, um ältere Nachrichten zu bearbeiten (d. H. Nicht nur die neueste), empfehle ich SourceTree . Die folgenden Schritte sind zu befolgen.

SourceTree interactive rebase

Für Commits, die noch nicht auf eine Fernbedienung übertragen wurden:

  1. Stellen Sie sicher, dass Sie alle aktuellen Änderungen festgeschrieben oder gespeichert haben (d. H., Auf der Registerkarte "Dateistatus" sind keine Dateien aufgeführt). Andernfalls wird dies nicht funktionieren.
  2. Klicken Sie in der Registerkarte "Protokoll/Verlauf" mit der rechten Maustaste auf den Eintrag mit einer angrenzenden Linie in der Grafik unter den Festschreibungen, die Sie bearbeiten möchten und wähle "Rebase children of <commit ref> interaktiv ..."
  3. Wählen Sie die gesamte Zeile für eine Commit-Nachricht aus, die Sie ändern möchten (, d. H. Klicken Sie auf die Spalte "Nachricht" .
  4. Klicken Sie auf die Schaltfläche "Nachricht bearbeiten".
  5. Bearbeiten Sie die Nachricht wie gewünscht im daraufhin angezeigten Dialogfeld und klicken Sie auf OK.
  6. Wiederholen Sie die Schritte 3 bis 4, wenn weitere Commit-Meldungen geändert werden müssen.
  7. Klicken Sie auf OK: Der Neustart wird gestartet. Wenn alles in Ordnung ist, endet die Ausgabe mit "Erfolgreich abgeschlossen". HINWEIS: Ich habe kürzlich gesehen, dass es mit Unable to create 'project_path/.git/index.lock': File exists. fehlgeschlagen ist, als ich es versuchte um mehrere Commit-Nachrichten gleichzeitig zu ändern. Ich bin mir nicht sicher, was genau das Problem ist oder ob es in einer zukünftigen Version von SourceTree behoben wird. Sollte dies jedoch der Fall sein, würde ich empfehlen, sie einzeln neu zu installieren (langsamer, aber zuverlässiger).

... oder ... für Commits, die bereits gepusht wurden:

Befolgen Sie die Schritte in diese Antwort , die den obigen Schritten ähnlich sind, für die jedoch ein weiterer Befehl von der Befehlszeile aus ausgeführt werden muss.

128
Steve Chambers

Wenn Sie nur das neueste Commit bearbeiten möchten, verwenden Sie:

git commit --amend

oder

git commit --amend -m 'one line message'

Wenn Sie jedoch mehrere Commits hintereinander bearbeiten möchten, sollten Sie stattdessen rebasing verwenden:

git rebase -i <hash of one commit before the wrong commit>

git rebase editing

In einer Datei wie der obigen schreibe edit/e oder eine der anderen Optionen und drücke Speichern und Beenden.

Jetzt sind Sie beim ersten falschen Festschreiben. Nehmen Sie Änderungen an den Dateien vor, und diese werden automatisch für Sie bereitgestellt. Art

git commit --amend

speichern und beenden Sie das und geben Sie

git rebase --continue 

um zur nächsten Auswahl zu gelangen, bis alle Ihre Einstellungen abgeschlossen sind.

Beachten Sie, dass diese Dinge alle Ihre SHA Hashes nach diesem bestimmten Commit ändern.

124

Wenn Sie nur Ihre letzte Nachricht ändern möchten, sollten Sie das Flag --only oder die Verknüpfung -o mit commit --amend verwenden:

git commit --amend -o -m "New commit message"

Dies stellt sicher, dass Sie Ihr Commit nicht versehentlich mit inszenierten Inhalten erweitern. Natürlich ist es am besten, eine richtige $EDITOR Konfiguration zu haben. Dann können Sie die Option -m weglassen, und git füllt die Commit-Nachricht mit der alten vor. Auf diese Weise kann es einfach bearbeitet werden.

123
David Ongaro

Aktualisieren Sie Ihre letzte falsche Festschreibungsnachricht mit einer neuen Festschreibungsnachricht in einer Zeile:

git commit --amend -m "your new commit message"

Oder versuche git reset wie folgt:

# You can reset your head to n number of commit
# NOT a good idea for changing last commit message
# but you can get an idea to split commit into multiple commits
git reset --soft HEAD^

# it will reset you last commit. Now, you
# can re-commit it with new commit message.

Mit reset werden Commits in kleinere Commits aufgeteilt

git reset kann Ihnen helfen, ein Commit auch in mehrere Commits zu unterteilen:

# reset your head. I am resetting to last commits:
git reset --soft HEAD^
# (you can reset multiple commit by doing HEAD~2(no. of commits)

# Now, reset your head for splitting it to multiple commits
git reset HEAD

# add and commit your files seperately to make multiple commits: e.g
git add app/
git commit -m "add all files in app directory"

git add config/
git commit -m "add all files in config directory"

Hier haben Sie Ihr letztes Commit erfolgreich in zwei Commits aufgeteilt.

99
przbadu

Auf diese Frage gibt es viele Antworten, aber keine erklärt sehr ausführlich, wie ältere Commit-Nachrichten mit VIM geändert werden können. Ich war nicht in der Lage, dies selbst zu tun, daher schreibe ich hier ausführlich auf, wie ich dies speziell für Leute getan habe, die keine Erfahrung mit 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 dies bereits herausgezogen hat, können Sie Dinge durcheinander bringen, indem Sie die Commit-Nachrichten ä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 im Terminal ein:

git rebase -i HEAD~5 * Wobei 5 die Anzahl der Commit-Nachrichten ist, die Sie ändern möchten. (Wenn Sie also das 10. zum letzten Commit ändern möchten, geben Sie 10 ein.)

Mit diesem Befehl gelangen Sie zu VIM, wo Sie Ihren Festschreibungsverlauf bearbeiten können. Die letzten 5 Commits sehen Sie oben wie folgt:

pick <commit hash> commit message

Anstelle von pick müssen Sie reword schreiben. Sie können dies in VIM tun, indem Sie i eingeben, wodurch Sie in den INSERT-Modus wechseln. (Sie sehen, dass Sie sich im Einfügemodus befinden, indem Sie unten das Wort EINFÜGEN eingeben.) Geben Sie für die Commits, die Sie ändern möchten, reword anstelle von pick ein.

Anschließend müssen Sie diesen Bildschirm speichern und schließen. Dazu müssen Sie zuerst in den Befehlsmodus wechseln, indem Sie die Esc-Taste drücken. (Sie können überprüfen, ob Sie sich im Befehlsmodus befinden, wenn das Wort EINFÜGEN am unteren Rand verschwunden ist.) Dann können Sie einen Befehl eingeben, indem Sie : eingeben. Der Befehl zum Speichern und Beenden lautet wq. Wenn Sie also :wq eingeben, sind Sie auf dem richtigen Weg.

Dann wird VIM jede Festschreibungsnachricht durchlaufen, die Sie umformulieren möchten. Hier können Sie die Festschreibungsnachrichten tatsächlich ändern. Sie tun dies, indem Sie in den INSERT-Modus wechseln, die Festschreibungsmeldung ändern, in den Befehlsmodus wechseln und speichern und beenden. Tun Sie dies fünfmal und Sie haben kein VIM mehr!

Wenn Sie dann bereits falsche Commits gesendet haben, müssen Sie git Push --force, um sie zu überschreiben. Denken Sie daran, dass git Push --force eine ziemlich gefährliche Sache ist, stellen Sie also sicher, dass niemand vom Server gezogen wird, da Sie Ihre falschen Commits gepusht haben!

Jetzt haben Sie Ihre Commit-Nachrichten geändert!

(Wie Sie sehen, bin ich in VIM nicht so erfahren. Wenn ich also falschen 'Jargon' verwendet habe, um zu erklären, was passiert, können Sie mich gerne korrigieren!)

82
Marijn

Sie können git-rebase-reword verwenden

Es wurde entwickelt, um ein Commit (nicht nur das letzte) auf dieselbe Weise wie commit --amend zu bearbeiten.

$ git rebase-reword <commit-or-refname>

Es ist nach der Aktion auf rebase interactive benannt, um ein Commit zu ändern: "reword". Siehe dieser Beitrag und Mann - Abschnitt interaktiver Modus-

Beispiele:

$ git rebase-reword b68f560
$ git rebase-reword HEAD^
76
albfan

Ich habe den Alias ​​von reci, recm für recommit (amend) hinzugefügt, jetzt kann ich es mit git recm oder git recm -m tun.

$ vim ~/.gitconfig

[alias]

    ......
    cm = commit
    reci = commit --amend
    recm = commit --amend
    ......
76
Chu-Siang Lai

Mir wurde klar, dass ich eine Zusage mit einem Tippfehler gemacht hatte. Zum Rückgängigmachen habe ich Folgendes getan:

git commit --amend -m "T-1000, advanced prototype"
git Push --force

Warnung: Wenn Sie die Ä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 den Zweig mit Ihnen teilt, da er seinen eigenen Verlauf umschreiben muss, wenn er die alte Kopie des gerade von Ihnen umgeschriebenen Commits hat.

54
neoneye

Ich benutze gerne folgendes:

  1. git status
  2. git add --all
  3. git commit -am "message goes here about the change"
  4. git pull <Origin master>
  5. git Push <Origin master>
49
Kedar Adhikari

Wenn Sie den Code nicht an Ihren Remote-Zweig gesendet haben ( GitHub / Bitbucket ), können Sie die Festschreibungsmeldung in der Befehlszeile wie folgt ändern.

 git commit --amend -m "Your new message"

Wenn Sie an einem bestimmten Zweig arbeiten, gehen Sie folgendermaßen vor:

git commit --amend -m "BRANCH-NAME: new message"

Wenn Sie den Code bereits mit der falschen Nachricht gesendet haben und beim Ändern der Nachricht vorsichtig sein müssen. Das heißt, nachdem Sie die Festschreibungsmeldung geändert und erneut versucht haben, sie zu pushen, treten Probleme auf. Führen Sie die folgenden Schritte aus, um eine gleichmäßige Wiedergabe zu erzielen.

Bitte lesen Sie meine gesamte Antwort, bevor Sie es tun.

git commit --amend -m "BRANCH-NAME : your new message"

git Push -f Origin BRANCH-NAME                # Not a best practice. Read below why?

Wichtiger Hinweis: Wenn Sie Force Push direkt verwenden, können Codeprobleme auftreten, an denen andere Entwickler im selben Zweig arbeiten. Um diese Konflikte zu vermeiden, müssen Sie den Code aus Ihrem Zweig ziehen, bevor Sie die force Push ausführen:

 git commit --amend -m "BRANCH-NAME : your new message"
 git pull Origin BRANCH-NAME
 git Push -f Origin BRANCH-NAME

Dies ist die beste Vorgehensweise beim Ändern der Festschreibungsmeldung, wenn diese bereits übermittelt wurde.

43
Prabhakar