Wie benenne ich die letzten N Commits-Nachrichten in Git um?

Lesezeit: 2 Minuten

Benutzer-Avatar
Talabes

Ich habe 30 Commits und möchte “Bug XXXXXXX” am Anfang aller Nachrichten hinzufügen, kann ich dies in einer einzigen Aktion/einem einzigen Befehl tun?

Ich versuche zu vermeiden, sie zu zerquetschen.

  • Hast du versucht git ändern Ich bin mir nicht sicher, ob Sie damit mehrere Commits durchführen können

    – Mark Mikofski

    7. Januar 2013 um 18:03 Uhr

Benutzer-Avatar
Markus Michofski

Verwenden git rebase -i HEAD~<N> wobei N die Anzahl der Commits ist, die zurückgehen sollen, und -i wird es interaktiv machen, dh es wird in vim oder was auch immer Ihr Standard-Editor ist, geöffnet. Sehen Scott Chacons Buch. Dann können Sie die Commit-Nachricht ändern.

Wenn Sie es automatisiert benötigen, müssen Sie es möglicherweise versuchen Filterzweig:

eine weitere Option zum Umschreiben des Verlaufs, die Sie verwenden können, wenn Sie eine größere Anzahl von Commits auf skriptfähige Weise umschreiben müssen

In diesem Fall würden Sie verwenden:

git filter-branch --msg-filter <command>

Sehen man git-filter-branch

Hier ist das im Handbuch angegebene Beispiel, um “Acked-by” an eine Reihe von Commits anzuhängen. Sie können es in “BUG XXXXXXX” ändern.

git filter-branch -f --msg-filter '
    echo "Bug XXXXXXX: \c"
    && cat
    ' HEAD~<N>..HEAD

wobei N die Anzahl der Commits ist, um zurück zu gehen und “BUG XXXXXXX” anzuhängen

  • Ich möchte vermeiden, nach jedem Commit anzuhalten, das ich ändern möchte, und die Nachricht zu ändern …

    – Talabes

    7. Januar 2013 um 18:08 Uhr

  • Hier ist eine Liste der letzten Filterzweigfragen von SO

    – Mark Mikofski

    7. Januar 2013 um 18:12 Uhr

  • Schöne Lösung! Nur eine Sache, bevor Sie diese Antwort als Lösung festlegen, die Nachrichten lauten jetzt: “Bug XXXX: \n “, wie kann ich die ganze neue Nachricht in einer Zeile hinterlassen? Vielen Dank!

    – Talabes

    7. Januar 2013 um 18:50 Uhr

  • Versuchen echo -n "Bug XXXX: " && cat um den abschließenden Zeilenumbruch zu vermeiden. Funktioniert es?

    – Mike Seplowitz

    7. Januar 2013 um 18:54 Uhr


  • “git filter-branch -f –msg-filter ‘echo “Bug XXXXXXX: \c” && cat’ HEAD~N..HEAD” ist die endgültige Antwort 🙂

    – Talabes

    7. Januar 2013 um 19:02 Uhr

Es könnte besser sein, sich nicht auf eines der folgenden Dinge zu verlassen:

echo -n "Bug XXXXXXX: "

echo "Bug XXXXXXX: \c"

Das Verhalten von Echo hängt davon ab, welche Version von Echo verwendet wird. Siehe die verlinkte Stackoverflow-Frage unten:

‘echo’ ohne Zeilenumbruch in einem Shell-Skript

Eine bessere Lösung könnte sein:

git filter-branch -f --msg-filter '
    printf "%s" "Bug XXXXXXX: "
    && cat
    ' HEAD~<N>..HEAD

1145910cookie-checkWie benenne ich die letzten N Commits-Nachrichten in Git um?

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

Privacy policy