Ändern der Git-Commit-Nachricht nach dem Push (vorausgesetzt, dass niemand aus der Ferne gezogen hat)

Lesezeit: 8 Minuten

Andern der Git Commit Nachricht nach dem Push vorausgesetzt dass niemand aus
K_U

Ich habe einen Git-Commit und anschließenden Push durchgeführt. Ich möchte die Commit-Nachricht ändern. Wenn ich das richtig verstehe, ist dies nicht ratsam, da jemand möglicherweise aus dem Remote-Repository gezogen hat, bevor ich solche Änderungen vornehme. Was ist, wenn ich weiß, dass niemand gezogen hat?

Gibt es eine Möglichkeit, dies zu tun?

  • Was hast du versucht? Angenommen, Sie wissen bereits, wie man die Commit-Nachricht ändert, und versuchen es dann und pushen, wird Git Ihnen sagen, was Sie tun müssen, um dies zu erreichen.

    – Andreas Marshall

    24. Januar 2012 um 1:59 Uhr


  • Siehe Antwort auf die Frage „Wie bearbeite ich eine falsche Commit-Nachricht in Git (ich habe gepusht)?“ stackoverflow.com/a/457396/444639

    – Mike Rylander

    14. März 2013 um 15:08 Uhr

  • help.github.com/articles/changing-a-commit-message

    – Mukesch

    17. Mai 2016 um 10:47 Uhr

  • Wenn Sie das HEAD-Commit ändern und normalerweise (ohne –force) pushen, schlägt es überraschenderweise nicht fehl. HEAD Commit-Nachricht wird mit der geänderten Commit-ID aktualisiert. Das bedeutet, dass andere Commit-IDs außer HEAD intakt bleiben. Ich habe dieses Verhalten mit der Version git 2.8.1 bemerkt.

    – Iris

    13. September 2017 um 9:00 Uhr

  • Einfach und unkompliziert für alle Commits, nicht nur die aktuellsten: stackoverflow.com/a/5032614/7705712

    – Edward D. Wilson

    25. Februar 2019 um 6:02 Uhr

1646635093 19 Andern der Git Commit Nachricht nach dem Push vorausgesetzt dass niemand aus
Dietrich Ep

Geschichte verändern

Wenn es sich um das neueste Commit handelt, können Sie einfach Folgendes tun:

git commit --amend

Dadurch wird der Editor mit der letzten Commit-Nachricht aufgerufen und Sie können die Nachricht bearbeiten. (Sie können verwenden -m wenn Sie die alte Nachricht löschen und eine neue verwenden möchten.)

Drücken

Und dann, wenn Sie drücken, tun Sie dies:

git push --force-with-lease <repository> <branch>

Oder Sie können “+” verwenden:

git push <repository> +<branch>

Oder Sie können verwenden --force:

git push --force <repository> <branch>

Seien Sie vorsichtig, wenn Sie diese Befehle verwenden.

  • Wenn jemand anderes Änderungen an denselben Zweig gepusht hat, möchten Sie wahrscheinlich vermeiden, dass diese Änderungen zerstört werden. Die --force-with-lease Option ist die sicherste, da sie abgebrochen wird, wenn es irgendwelche Upstream-Änderungen gibt (

  • Wenn Sie den Branch nicht explizit angeben, verwendet Git die standardmäßigen Push-Einstellungen. Wenn Ihre Standard-Push-Einstellung “Matching” ist, können Sie Änderungen an mehreren Branches gleichzeitig vernichten.

Danach ziehen / holen

Alle, die bereits gezogen haben, erhalten jetzt eine Fehlermeldung, und sie müssen aktualisieren (vorausgesetzt, sie nehmen selbst keine Änderungen vor), indem sie Folgendes tun:

git fetch origin
git reset --hard origin/master # Loses local commits

Seien Sie vorsichtig bei der Verwendung reset --hard. Wenn Sie Änderungen an der Verzweigung vorgenommen haben, werden diese Änderungen vernichtet.

Eine Anmerkung zum Ändern des Verlaufs

Die zerstörten Daten sind wirklich nur die alte Commit-Nachricht, aber --force weiß das nicht und löscht gerne auch andere Daten. Also denken Sie an --force als “Ich möchte Daten vernichten, und ich weiß genau, welche Daten vernichtet werden.” Aber wenn die zerstörten Daten festgeschrieben sind, können Sie oft alte Festschreibungen aus dem Reflog wiederherstellen – die Daten sind es tatsächlich verwaist statt zerstört (obwohl verwaiste Commits regelmäßig gelöscht werden).

Wenn Sie nicht glauben, dass Sie Daten zerstören, dann halten Sie sich davon fern --force… es können schlimme Dinge passieren.

Deshalb --force-with-lease ist etwas sicherer.

  • Seien Sie vorsichtig mit diesem “Fix”, denn wenn sie lokale, nicht gepushte Commits haben, werden sie “verloren gehen” (hat verloren wirklich Bedeutung verwaistaber ihre Wiederherstellung ist nicht offensichtlich).

    – Andreas Marshall

    24. Januar 2012 um 2:07 Uhr

  • Sie möchten wahrscheinlich den Branch-Namen angeben, wenn Sie –force pushen, andernfalls könnten Sie mehr pushen, als Sie erwartet haben.

    – Benutzer693960

    12. März 2013 um 0:25 Uhr

  • @ user693960: Git wird nur das pushen, was Sie konfigurieren, um es zu pushen.

    – Dietrich Ep

    12. März 2013 um 2:37 Uhr

  • Einfach git push --force ohne die Optionen und funktioniert auch, wenn Sie Ihren Upstream eingerichtet haben.

    – ahnbizcad

    29. April 2014 um 9:16 Uhr


  • Können Sie ein Beispiel dafür geben <repository>? Ist es origin? org/repo? Oder nur repo?

    – MikeSchinkel

    30. August 2018 um 3:49 Uhr

Andern der Git Commit Nachricht nach dem Push vorausgesetzt dass niemand aus
Manish Shrivastava

Sag nur:

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

und dann

git push --force

  • Es sollte funktionieren @ahnbizcad, Sie haben vielleicht ein anderes remote Name, naja (y)!!

    – Manish Shrivastava

    26. Februar 2016 um 10:28 Uhr

  • Es funktioniert nicht, weil – als die QUESTION sagt – das Commit ist bereits PUSHED. Amend funktioniert für nicht gepushte Commits.

    – pescho hristov

    8. Februar 2017 um 9:32 Uhr

  • Nachdem ich dies versucht habe, bekomme ich diesen Fehler: remote: To prevent you from losing history, non-fast-forward updates were rejected. remote: Merge the remote changes (e.g. 'git pull') before pushing again. See the 'Note remote: about fast-forwards' section of 'git push --help' for details. ` [remote rejected] master -> master (Pre-Receive-Hook abgelehnt)`

    – Michael Innes

    8. Mai 2018 um 0:23 Uhr


  • Ich habe diese Befehle erst erfolgreich angewendet, nachdem ich meinen Zweig vorübergehend “entschützt” hatte, was in meinem von GitLab gehosteten Projekt geschah. Wenn Sie dieses Problem haben, bevor Sie diese Befehle anwenden, lesen Sie bitte diesen stackoverflow.com/a/32267118/1423345, um den Zweig zu “entschützen”, und Sie können ihn wieder “schützen”, nachdem Sie die Commit-Nachricht geändert haben 🙂

    – John

    3. Juli 2018 um 14:33 Uhr

  • funktioniert gut für mich. 1. git commit –amend -m “Neue Commit-Nachricht” 2. git push –force remoteName branchName in meinem Fall ist remoteName origin

    – Choudhary hinzufügen

    29. Januar 2020 um 10:20 Uhr


Andern der Git Commit Nachricht nach dem Push vorausgesetzt dass niemand aus
Jinsong Li

So bearbeiten Sie einen anderen Commit als den aktuellsten:

Schritt 1: git rebase -i HEAD~n interaktives Rebase für den letzten zu tun n Verpflichtungen betroffen. (dh wenn Sie eine Commit-Nachricht 3 Commits zurück ändern möchten, tun Sie dies git rebase -i HEAD~3)

git wird einen Editor öffnen, um diese Commits zu handhaben, beachten Sie diesen Befehl:

#  r, reword = use commit, but edit the commit message

genau das brauchen wir!

Schritt 2: Ändern pick zu r für die Commits, bei denen Sie die Nachricht aktualisieren möchten. Ändern Sie hier nicht die Commit-Nachricht, sie wird ignoriert. Das machst du im nächsten Schritt. Speichern und schließen Sie den Editor.

Beachten Sie, dass, wenn Sie Ihren Rebase-‘Plan’ bearbeiten, der Vorgang zum Umbenennen der Dateien noch nicht beginnt, führen Sie Folgendes aus:

git rebase --continue

Wenn Sie den für die interaktive Sitzung verwendeten Texteditor ändern möchten (z. B. von der Standardeinstellung vi zu nano), führen Sie Folgendes aus:

GIT_EDITOR=nano git rebase -i HEAD~n

Schritt 3: Git öffnet für jede Revision, die Sie einfügen, einen anderen Editor r Vor. Aktualisieren Sie die Commit-Nachricht nach Belieben, speichern und schließen Sie den Editor.

Schritt 4: Nach allen Commits werden die Nachrichten aktualisiert. Sie möchten vielleicht tun git push -f um die Fernbedienung zu aktualisieren.

  • Dies sollte eine akzeptierte Antwort sein, da sie im Gegensatz zu einer akzeptierten Antwort die Möglichkeit bietet, andere Commits als den letzten Commit zu ändern. Du hast meinen Tag gerettet. Danke!

    – xNull

    3. Dezember 2017 um 17:10 Uhr

  • Wählen Sie n=3 für die letzten 3 Commits: git rebase -i HEAD~3

    – Henke

    8. März 2018 um 15:10 Uhr

  • Wenn Sie Ihren Rebase-‘Plan’ bearbeiten, beginnt er noch nicht mit dem Umbenennen der Dateien, führen Sie ihn aus git rebase --continue. Und wenn Sie den für die interaktive Sitzung verwendeten Texteditor ändern möchten (z. B. von der Standardeinstellung vi zu nano), Lauf GIT_EDITOR=nano git rebase -i HEAD~n.

    – Jamie Birke

    20. November 2018 um 16:39 Uhr

  • Ich habe dies bearbeitet, um ein wenig mehr Informationen hinzuzufügen. Bitte schau es dir an. Dies war die Antwort auf das, was ich tun wollte, aber ich habe daran vorbei gescrollt, weil es keine Kopfzeile hatte.

    – Kipp

    9. Oktober 2019 um 19:56 Uhr

  • Dadurch wurde ein zusätzlicher Commit mit der korrigierten Commit-Nachricht erstellt.

    – Benutzer3071284

    9. März 2021 um 18:36 Uhr

1646635096 483 Andern der Git Commit Nachricht nach dem Push vorausgesetzt dass niemand aus
Abdul Rizwan

Verwenden Sie diese beiden Schritte in der Konsole:

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

und dann

git push -f

Getan 🙂

Es sollte erwähnt werden, dass wenn du benutzt push --force Bei mehreren Referenzen werden sie ALLE als Ergebnis geändert. Achten Sie darauf, wohin Ihr Git-Repo zum Pushen konfiguriert ist. Glücklicherweise gibt es eine Möglichkeit, den Prozess leicht abzusichern, indem Sie einen einzelnen zu aktualisierenden Zweig angeben. Lesen Sie von den Git-Manpages:

Beachten Sie, dass –force für alle Refs gilt, die gepusht werden, daher kann die Verwendung mit push.default auf Matching oder mit mehreren Push-Zielen, die mit remote.*.push konfiguriert sind, andere Refs als den aktuellen Zweig überschreiben (einschließlich lokaler Refs, die vorhanden sind strikt hinter ihrem entfernten Gegenstück). Um einen Push auf nur einen Branch zu erzwingen, verwenden Sie ein + vor der zu pushenden Refspec (z. B. git push origin +master, um einen Push auf den Master-Branch zu erzwingen).

  • Sehr wichtiger Hinweis.

    – Peterh

    19. Januar 2017 um 16:14 Uhr

  • Keine der Force-Antworten funktioniert bei mir, da ich keine ForcePush-Berechtigungen auf dem Server habe. Stattdessen möchte ich einen Commit durchführen, der eine vorherige Commit-Nachricht ändert. Ich könnte “Commit-Nachricht geändert” in den Kommentarbereich dieses Commit schreiben.

    – Nürettin

    12. September 2017 um 6:20 Uhr

git commit --amend

Bearbeiten und ändern Sie dann die Nachricht im aktuellen Fenster. Danach tun

git push --force-with-lease

  • Sehr wichtiger Hinweis.

    – Peterh

    19. Januar 2017 um 16:14 Uhr

  • Keine der Force-Antworten funktioniert bei mir, da ich keine ForcePush-Berechtigungen auf dem Server habe. Stattdessen möchte ich einen Commit durchführen, der eine vorherige Commit-Nachricht ändert. Ich könnte “Commit-Nachricht geändert” in den Kommentarbereich dieses Commit schreiben.

    – Nürettin

    12. September 2017 um 6:20 Uhr

1646635098 670 Andern der Git Commit Nachricht nach dem Push vorausgesetzt dass niemand aus
PraNaY

Befehl 1.

git commit --amend -m "New and correct message"

Dann,

Befehl 2.

git push origin --force

963640cookie-checkÄndern der Git-Commit-Nachricht nach dem Push (vorausgesetzt, dass niemand aus der Ferne gezogen hat)

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

Privacy policy