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.
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.
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
– 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
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