派遣で働くエンジニアのスキルアップを応援するサイト

PRODUCED BY RECRUIT

【連載】マンガでわかるGit ~コマンド編~ 第5話 プッシュ済みのコミットを取り消したい!リバートの使い方

f:id:itstaffing:20191021120210j:plain

Webサービスやアプリ開発の現場では必須のバージョン管理システム「Git(ギット)」。Gitは、専用のソフトを使えばクリックで直感的に操作することもできますが、いざというときにコマンドが使えると便利です。

前回の 第4話 では、コンフリクトの解決方法を学びました。

・コンフリクトした箇所を修正して、コミットしなおす

$ git commit -m

・コンフリクトした箇所が多すぎて修正が難しい場合、マージを中止する

$ git merge --abort

今回の第5話では、特定のコミットを打ち消すコマンド「リバート」について学びます。機能としてはシンプルなので、初心者でも使いやすいうえに、いざというとき便利なコマンドです。このマンガを通して、わかばちゃんと一緒に知識を身につけていきましょう!

【筆者】湊川 あいさん
【筆者】湊川 あいさん
フリーランスのWebデザイナー・漫画家・イラストレーター。マンガと図解で、技術をわかりやすく伝えることが好き。 著書『わかばちゃんと学ぶGit使い方入門』・『わかばちゃんと学ぶ Googleアナリティクス』・『わかばちゃんと学ぶ Webサイト制作の基本』『運用ちゃんと学ぶ』が発売中のほか、マンガでわかるGit・マンガでわかるDocker・マンガでわかるRuby・マンガでわかるScrapbox・マンガでわかるLINE Clova開発・マンガでわかる衛星データ活用といった分野横断的なコンテンツを展開している。

・Amazon著者ページ
・Twitterアカウント

コミット済みの内容を、あとから取り消したい!

f:id:itstaffing:20191021120213j:plain
f:id:itstaffing:20191021120216j:plain

このマンガのように、コミット済みの内容を取り消さないといけない場合、どうしたらいいか分からず、あわててしまったことはありませんか?

Gitにはコミットした内容を取り消す方法がいくつかありますが、まずは一番安全で簡単な「リバート」を習得しましょう。

リバートしてみよう

リバートは、指定したコミットと逆の内容をコミットしてくれます。
コマンドは、たったこれだけです。

& git revert [打ち消したいコミットID]

ちなみに、リバート(revert)は英語でいうと、「元に戻す」という意味です。

▼ リバートすると、このようにコミットメッセージ編集画面になります

f:id:itstaffing:20191021120219j:plain

▼ 編集する必要がなければ、Escキーを押してから「ZZ」と入力することで確定されます。 見事、リバートコミットが作られました

f:id:itstaffing:20191021120221j:plain
f:id:itstaffing:20191021120224j:plain
f:id:itstaffing:20191021120146j:plain
f:id:itstaffing:20190617145538j:plain
git revert 、マスターしたよ!これでいくら間違えても大丈夫だね。
f:id:itstaffing:20190617145541j:plain
って、おいおい……。さすがにこの履歴は読みづらいよ。
f:id:itstaffing:20191021120148j:plain

f:id:itstaffing:20190617145538j:plain
た、確かに…。そういえば、さっきリバート以外にも取り消せるコマンドはあるって言ってたよね。そっちを教えてよ!
f:id:itstaffing:20190617145541j:plain
ん~、リセットか……。リセットはちょっと危険だから初心者には教えないようにしているのだが、リフログと一緒に覚えてもらえば……。ブツブツ
f:id:itstaffing:20190617145538j:plain
ブツブツ言ってないでさっさと教えなさい!それでも大学教授なの!?
f:id:itstaffing:20190617145541j:plain
前から思っていたのだが、いつの間にか上下関係逆転してないか?
★魔王教授のコラム

リバートが便利なのは、プッシュ済みのコミットを打ち消したいとき。プッシュ済みのコミットは、そのまま上に新しいコミットを乗せる形で「打ち消し」を行えるからだ。

一方、次回説明するリセットは、コミットそのものを消去してしまう強力なコマンドだ。すでに他のメンバーがそれを親としてコミットを重ねてしまっているときにリセットをしてしまうと、他のメンバーがプッシュ不能になってしまう。それもそのはず、あるはずの親がいなくなっているからだ。

というわけで、初心者の頃は無理せずリバートを使うことをオススメする。リセットは、Gitに慣れてきたら習得していこう。

まとめ

さて、ここまででコミットを打ち消す方法がわかりました。

・特定のコミットを打ち消す

& git revert [打ち消したいコミットID]

コミットの歴史を改変するのではなく、新しくコミットが上に積まれるだけなので安心して使えるコマンドです。

Gitにはまだまだたくさんのコマンドがあります。
次回、第6話では git reset(リセット)について学んでいきましょう。

第1話はこちら
第2話はこちら
第3話はこちら
第4話はこちら