「ここからここまでのコミット」と範囲を指定したrevertをして、いい感じのコミットメッセージを作る方法です。
複数のコミットをrevertしたい場合は、単に複数のコミットを指定するか、オプション--no-commit
でrevertコマンドを繰り返した後にrevert --continue
して確定します。どちらの場合も、コミットメッセージをコマンドラインで指定することができません。オプション-e
はコミットメッセージを編集するためのエディタを開くもので、メッセージをコマンドラインで指定できません。*コマンドリファレンス Git - git-revert Documentation
メッセージを指定するには、オプション--no-commit
を実行した後に通常のコマンドgit commit
をオプション-m
と共に実行します。from: stack overflow
ところで、gitには「ここからここまでのコミット」を表す記法があります。例えば、master..HEAD
の「..
」みたいなやつ。詳しくはここに書いてあります、Git Book コミットの範囲指定。revertコマンドでは、この記法で複数コミットを指定できます。
以下のコマンドではbashの文字列展開を使って、すべての取り消し対象コミットのメッセージの先頭行を結合したテキストを作ります。
$ ref=[ここまで戻したいコミット、タグ]
$ git revert --no-commit $ref..HEAD
$ git commit -m "Revert to $ref" -m "$(eval "git log --pretty=oneline $ref..HEAD")"
# 確認
$ git diff $ref HEAD
revert --no-commit
で、チェリーピッキング
revert --continue
するとメッセージが指定できない-m
オプションを複数書いたら改行して追加されるeval
を使う
"$(eval "$var")"
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント