2017-04-10 5 views
0

gitの履歴を整理しようとしています。たとえば、コミットメッセージのすべての行をトリムします。私のような何かをできるようにする必要があります。git --msg-filterの内部でのawkの使い方

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

この、もちろん、理由はアポストロフィの私の悪い使い方で失敗します。

私は、エスケープしようとしたりダブルアポストロフィを使用しようとすると、うまくいきません。私はこれを取る処理するために必要なものの例として

Add cool service to application 

Related: ISSUE-3 

これは私の要約ラインからそれをコミットし、削除の終わりに関連する問題の識別子を付加した結果である、スペース(複数可)を注意してくださいコミット要約の開始時。私がawkを使ってトリミングしたいものは、ほとんどコミットサマリーです。

私の制限されたbashスキルを手伝ってもらえますか?次のコマンドで事前

+0

を加えるの先頭にechoコマンドを追加することも試してみてください – Inian

+0

私は@Inianの例を示すために再編集しました。ありがとう! – davidmpaz

+0

あなたのメッセージの後に削除する必要があるのはいつも同じ2行ですか? – Inian

答えて

1

ありがとう:

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

最も内側の単一引用符の間の発現がエスケープされていないと、$ 1は有効かもしれ値

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 
echo git filter-branch -f --msg-filter 'cat | awk '\''{$1=$1;print}'\' HEAD 

か明確printf "'%s'\n"

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