2017-04-10 4 views
0

Ich versuche, etwas git Geschichte aufzuräumen. Zum Beispiel trimmen Sie alle Zeilen in meinen Commits-Nachrichten. Ich muss in der Lage sein, etwas zu tun:Wie awk in git verwenden --msg-filter

git filter-branch -f --msg-filter 'cat | awk '{$1=$1;print}'' HEAD 

dies, natürlich, wird wegen meiner schlechten Nutzung von Apostrophe scheitern.

Es funktioniert auch nicht, wenn ich versuche, dann zu entkommen oder doppelte Apostrophe verwenden.

Als Beispiel dafür, was ich brauche, dies zu verarbeiten nehmen:

Add cool service to application 

Related: ISSUE-3 

Dies ist das Ergebnis von Anhängen verwandtes Problem Kennung am Ende des begehen und es aus meiner Zusammenfassung Linie entfernen, beachten Sie den Raum (e) am Anfang der Commit-Zusammenfassung. Es sind meistens diejenigen, die zusammenfassend sagen, was ich mit awk trimmen möchte.

Kann mir jemand mit meinen begrenzten bash Fähigkeiten helfen?

Vielen Dank im Voraus

+0

Zeigen Sie uns einen Eingang hinzu und sagen Sie uns, welche Linien Sie vermeiden möchten? – Inian

+0

Ich habe neu bearbeitet, um Beispiele @Inian zu zeigen. Vielen Dank! – davidmpaz

+0

Ist es immer die gleichen zwei Zeilen nach Ihrer Nachricht, die entfernt werden muss? – Inian

Antwort

1

Im folgenden Befehl ein:

git filter-branch -f --msg-filter 'cat | awk '{$1=$1;print}'' HEAD 

der Ausdruck zwischen dem innersten Apostrophe ist nicht entgangen und $ 1 durch den Wert ersetzt wird

git filter-branch -f --msg-filter 'cat | awk '\''{$1=$1;print}'\' HEAD 

gültig sein kann. Versuchen Sie auch Echo-Befehl am Anfang der Zeile

echo git filter-branch -f --msg-filter 'cat | awk '{$1=$1;print}'' HEAD 
echo git filter-branch -f --msg-filter 'cat | awk '\''{$1=$1;print}'\' HEAD 

oder klarer Zugabe printf "'%s'\n"

printf "'%s'\n" git filter-branch -f --msg-filter 'cat | awk '\''{$1=$1;print}'\' HEAD