git revertをすべき時
git revert
ってコマンドを知っていますか?git revert
はコミット作業を打ち消すコマンドです。
でも、フツーに開発していると、特に一人開発の時は別にリバートせんでも、「作業上書きしてコミットしたらそれでよくね?」っていう感じでゴリ押しで進めることも可能です。そうなるとgit revert
をする場面がない。(何を隠そうわたくしもそうだった)
それか、コミットを取り消すなら、 git reset HEAD^
とかでよくね?ってなりがちかも。
では、どんな時にgit revertは有効なのでしょうか?それは「すでにプルリクを出している時」です。
一旦GitHubなどのリポジトリにプルリクを出していると、追加コミットのやり方では、無駄にコミットが増えてしまいます。(コミット汚染)
また、むやみにgit reset
をしてしまうと、整合性が取れなくなってしまいます。
そんな時、レビュワーが見ても一目瞭然で「作業を元に戻した、何を元に戻した」ということを理解できるgit revert
。
あ、このコミットは不要だったんだな。なぜ不要だったのかな?とか、まあコードを読む際の一つの情報になりますね。
git revertの作業流れ
前置きが長くなりましたが、そんなgit revert
作業の流れです。
step
1git logする
まずはローカルで対象のディレクトリに移動した後、git log
します。
git revert
をするためには対象のコミットハッシュを知る必要があります。
なので、最初はgit log
で履歴を確認しましょう。
ちなみに履歴から抜ける(シェル操作の元に戻る)ときはq(quitの略)を押すと画面を元にもどれます。
step
2対象コミットハッシュをコピペ
↑の黄色い文字のcommitという後の長い文字列がgit revert
で対象とするコミット番号になります。
ちなみに、teratermなどsshクライアントのコピペの仕方ってわかりますか?
今回revert対象にしたいコミットの文字列ってコピペする必要があります。その時にパッとコピペができれば作業効率が良いです。
teratermだと、マウスで範囲をドラッグで選択して(選択した時には自動でコピってる)、そして、コマンド操作の箇所で右クリックでペーストしています。
(macのターミナルとかはググって。。)
step
3いざgit revertを実行
これで、コミットしたい対象を特定したら、後はgit revertしましょう。
普通の操作画面に(qして)戻ったら
command
git revert 対象コミット番号
とコマンドを打ちます。
その後、「作業を取り消した」というコミットが必要になります。
特にコミットを変える必要がなければ、:wq
でwrite(記録)してquitしてください。
※Macのターミナルの場合、自動でINSERTモードになってるかもなので、その場合、ESCキーでエスケープしてから:wq
しましょう。
step
4git logでrevertできているか確認
では、最後にgit log
でキチンとrevertできているか確認しますgit log
は確認用に癖つけてください。
「Revert うんたら」ってのが追加されると思います。(それかrevertの際、コミット編集した内容が確認できるはず)
これで対象の作業が元に戻りました。
GitHubなどにプッシュした時にRevertした分(もとにもどした)分も含めて整合性が保てるようになります!お疲れさまでした~!