19

30 件のコミットがあり、すべてのメッセージの先頭に「Bug XXXXXXX」を追加したいのですが、これを 1 つのアクション/コマンドで実行できますか?

私はそれらをつぶさないようにしています。

4

2 に答える 2

33

git rebase -i HEAD~<N>ここで、Nは戻るコミットの数であり、インタラクティブになります-i。つまり、vimまたはデフォルトのエディターで開きます。スコットチャコンの本を参照してください。次に、コミットメッセージを変更できます。

自動化が必要な場合は、フィルターブランチを試す必要があります。

スクリプト可能な方法で多数のコミットを書き換える必要がある場合に使用できる別の履歴書き換えオプション

この場合、次を使用します。

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

mangit-filter-branchを参照してください

これは、一連のコミットに「Acked-by」を追加するためのマニュアルに記載されている例です。「BUGXXXXXXX」に変更できます

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

ここで、Nは、戻って「BUGXXXXXXX」を追加するコミットの数です。

于 2013-01-07T18:05:17.907 に答える
2

次のいずれにも依存しない方がよい場合があります。

echo -n "Bug XXXXXXX: "

echo "Bug XXXXXXX: \c"

echo の動作は、使用されている echo のバージョンによって異なります。以下のリンクされたスタックオーバーフローの質問を参照してください。

シェルスクリプトで改行なしの「エコー」

より良い解決策は次のとおりです。

git filter-branch -f --msg-filter '
    printf "%s" "Bug XXXXXXX: "
    && cat
    ' HEAD~<N>..HEAD
于 2017-04-26T13:23:39.203 に答える