Wie ändert man einen Commit, ohne die Commit-Nachricht zu ändern (Wiederverwendung der vorherigen)?

Lesezeit: 4 Minuten

Wie andert man einen Commit ohne die Commit Nachricht zu andern
Sridhar Sarnobat

Gibt es eine Möglichkeit, ein Commit ohne vi (oder Ihre $EDITOR) mit der Option angezeigt, Ihre Commit-Nachricht zu ändern, aber einfach die vorherige Nachricht wiederzuverwenden?

  • Ich würde meine eigene Frage ablehnen, nachdem ich auf die harte Tour die Übel der Änderung gelernt hatte.

    – Sridhar Sarnobat

    11. August 2014 um 6:35 Uhr

  • Solange Sie sich an bestimmte Regeln halten (z. B. etwas nicht ändern, das bereits gepusht wurde), gibt es keinen Grund, warum eine Änderung eine schlechte Sache sein muss.

    – paullb

    20. Oktober 2014 um 9:48 Uhr

  • Änderungscommits sollten nicht für das intermittierende Commit von Arbeit während einer einzelnen logischen Änderung verwendet werden. Dafür sollte man sich lokal richtig eintragen und dann quetschen die Commit-Historie ist fertig (@Sridhar-Sarnobat)

    – DBCerigo

    26. Januar 2018 um 13:52 Uhr


  • Ich stimme @DBCerigo vollkommen zu. Die einzige Situation, in der ich das Ändern nützlich finde, ist, wenn ich vergessen habe, eine Datei in einem vorherigen Commit bereitzustellen (z. B. weil sie neu ist und daher beim Ausführen von git commit -a nicht automatisch bereitgestellt wird) und sie rückwirkend festschreiben möchte.

    – Sridhar Sarnobat

    26. Januar 2018 um 23:38 Uhr


  • Ein anderes Mal ist das Ändern nützlich, auch wenn Sie die Gefahren des Änderns des Verlaufs erkennen, wenn Sie mit Ihrer letzten Commit-Nachricht unzufrieden sind und sie umformulieren möchten, ohne eine Neubasis erstellen zu müssen.

    – Sridhar Sarnobat

    30. März 2018 um 23:36 Uhr


Wie andert man einen Commit ohne die Commit Nachricht zu andern
Zottel

Seit der Version git 1.7.9 können Sie auch verwenden git commit --amend --no-edit um Ihr Ergebnis zu erhalten.

Beachten Sie, dass dies keine Metadaten aus dem anderen Commit enthält, wie z. B. den Zeitstempel, der für Sie wichtig sein kann oder auch nicht.

  • Sie können es auch einfacher machen, standardmäßig auf das Flag –no-edit zu setzen, indem Sie einen Alias ​​hinzufügen: “amend = commit -a –amend –no-edit”

    – Jherico

    22. April 2013 um 21:00 Uhr


  • @Jherico Ich würde vorschlagen, -a zu entfernen. Bitte führen Sie atomare Commits durch, es ist viel einfacher zu überprüfen oder zu rebasen 🙂

    – frouo

    8. April 2020 um 10:54 Uhr

  • Warum benutze ich –no-edit seit einem Jahrzehnt nicht mehr?!?! Danke 🙂

    – lzap

    9. September 2020 um 8:52 Uhr

  • git config --global alias.amend 'commit --amend --no-edit'

    – mfink

    29. Juni 2021 um 18:40 Uhr

1646318293 625 Wie andert man einen Commit ohne die Commit Nachricht zu andern
Andy Roß

git commit -C HEAD --amend wird tun, was du willst. Die -C Option übernimmt die Metadaten von einem anderen Commit.

  • Nur um Andys Antwort zu ergänzen. Wenn Sie dies häufig tun, können Sie mithilfe von einen Alias ​​​​dafür einrichten git config --global alias.amend 'commit --amend -C HEAD'. Sie können dann verwenden git amend als Abkürzung.

    – mikej

    19. April 2012 um 21:35 Uhr

  • Komm schon Leute, sei nicht faul, aktualisiere Git und benutze den eingebauten Befehl, den Shaggle vorschlägt! Plus eine für die Option -C.

    – Dimitris Baltas

    26. Juni 2012 um 15:56 Uhr

  • Nicht nur Zeitstempel, sondern auch die Urheberschaft!

    – Benutzer1338062

    27. August 2015 um 15:20 Uhr

  • @RyanCastner In der Tat stammt der Kommentar, auf den Sie sich beziehen, aus dem Jahr 2013. Mit der Git-Version, die ich derzeit verwende, --amendbehält auch ohne andere Option das Autordatum bei (ändert aber das Commit-Datum). Daher habe ich meinen alten Kommentar entfernt.

    – Ruben Verborgh

    16. August 2017 um 1:07 Uhr

  • Tatsächlich ist diese Antwort auf andere Weise wertvoll, auch wenn es nicht die akzeptierte Antwort ist. Im Gegensatz zur anderen Antwort müssen Sie nicht verwenden —amend. Sie können einen neuen Commit erstellen, aber dieselbe Nachricht wie beim vorherigen Commit verwenden. Das mag nicht nützlich klingen, aber meine Commit-Nachricht standardmäßig, wenn ich nur meine Arbeit speichere, ohne mir eine nette Commit-Nachricht ausdenken zu müssen, verwende ich die Nachricht immer wieder —message=“Work in progress (untested)”

    – Sridhar Sarnobat

    7. Dezember 2017 um 1:30 Uhr


Eine andere (dumme) Möglichkeit ist zu git commit --amend <<< :wq wenn du vi(m) as hast $EDITOR.

  • Auch wenn dies für diesen Anwendungsfall nicht erforderlich ist, war mir nicht bewusst, dass Sie zu vim leiten können. Das eröffnet einige faszinierende Möglichkeiten. Toller Tipp.

    – Sridhar Sarnobat

    11. Januar 2016 um 20:38 Uhr

  • ... <<< ZZ könnte noch weniger tippen 😉

    – Ruslan

    4. September 2016 um 12:10 Uhr


  • ..und noch weniger – ... <<< :x 🙂

    – swisgaar

    1. Dezember 2016 um 14:19 Uhr

  • Ich denke nicht, dass es dumm ist. Es ist eine großartige Möglichkeit, den Arbeitsablauf für jeden Befehl zu verbessern, der vi öffnet.

    – B Sieben

    25. Dezember 2016 um 20:12 Uhr

  • dreifache spitze Klammern. das ist neu.

    – Oligofren

    22. Januar 2017 um 13:02 Uhr

Um die akzeptierte Antwort zu erweitern, können Sie auch Folgendes tun:

git commit --amend --no-edit -a

um die aktuell geänderten Dateien hinzuzufügen.

1646318293 15 Wie andert man einen Commit ohne die Commit Nachricht zu andern
aljgom

Sie können einen Alias ​​speichern, der die akzeptierte Antwort verwendet, damit er wie folgt verwendet werden kann:

git oops wird alles hinzufügen und mit derselben Nachricht ändern

git oops -m "new message" wird die Nachricht ändern und ersetzen


Dies ist der Pseudonym

 oops = "!f(){ \
    git add -A; \
    if [ \"$1\" == '' ]; then \
        git commit --amend --no-edit; \
    else \
        git commit --amend \"[email protected]\"; \
    fi;\
}; f"

Nur um etwas Klarheit zu schaffen, müssen Sie Änderungen mit inszenieren git adddann letzten Commit ändern:

git add /path/to/modified/files
git commit --amend --no-edit

Dies ist besonders nützlich, wenn Sie vergessen haben, einige Änderungen beim letzten Commit hinzuzufügen, oder wenn Sie weitere Änderungen hinzufügen möchten, ohne neue Commits zu erstellen, indem Sie den letzten Commit wiederverwenden.

924400cookie-checkWie ändert man einen Commit, ohne die Commit-Nachricht zu ändern (Wiederverwendung der vorherigen)?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy