2017-04-10 73 views
0

我想清理一些git歷史記錄。例如,修剪我提交消息中的所有行。我需要能夠做到這樣的事情:如何在git中使用awk --msg-filter

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

這當然會失敗,因爲我的糟糕的使用撇號。

如果我嘗試逃避或使用雙撇號,它也不起作用。

至於什麼,我需要處理採取這樣一個例子:

Add cool service to application 

Related: ISSUE-3 

這是在犯和我的彙總行刪除,請注意空間的末尾(S)附加相關的問題標識符的結果在提交摘要的開始。主要是那些我想用awk修剪的提交摘要。

任何人都可以用我有限的bash技能幫助我嗎?

預先感謝

+0

顯示我們的輸入,並告訴我們行

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 

或更清晰的開頭添加echo命令你想避免線路? – Inian

+0

我已重新編輯以顯示示例@Inian。謝謝! – davidmpaz

+0

您的留言需要刪除後,它總是兩行相同嗎? – 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 

取代可能是有效的。也嘗試在加入printf "'%s'\n"

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