これは、this answerで使用したのと同じ方法を使用して実行できます。
まず、関連するコミットを見つける必要があります。
git log --format=format:"%H %s" master..HEAD | grep -E "deleteme|temporary"
これはあなたにmaster
とあなたの現在のブランチの間にあるdeleteme
またはtemporary
を含むコミットメッセージとコミットのリストが表示されます:あなたのような何かをすることを行うことができます。これらは、削除する必要のあるコミットです。
保存このbashスクリプトのどこかで、あなたがそれにアクセスすることができます。
#!/bin/bash
for sha in $(git log --format=format:"%H %s" master..HEAD | grep -E "deleteme|temporary" | cut -d " " -f 1)
do
sha=${sha:0:7}
sed -i "s/pick $sha/drop $sha/" [email protected]
done
次にとしてリベースを実行します。これは、自動的にコミットメッセージにdeleteme
またはtemporary
を含むすべてのコミットをドロップします
GIT_SEQUENCE_EDITOR=/path/to/script.sh git rebase -i
。私の他の回答で述べたように
:
使用することをコミットしている計算に実行されますが、これは問題であるならば、あなたはおそらく渡すことができるもののコマンドをカスタマイズすることができ、[このスクリプトは許可されません]そのようなカスタマイズを可能にする環境変数に置き換えます。
必須警告:リベースは歴史を書き換えているので、これはこのブランチに取り組んで他の誰のための破壊的/危険なことができます。コラボレーションしている相手と行ったことを明確に伝えてください。
誰かがトラブルを探す;) –
意図しない結果が生じていますか? – JeremyKun
'filter-branch'を試してみてください。 –