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

PRODUCED BY RECRUIT

第7話 間違えて reset しちゃった?git reflogで元どおり【連載】マンガでわかるGit ~コマンド編~

f:id:itstaffing:20191223102837j:plain

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

前回の 第6話 では、特定の時点までファイルを巻き戻す「リセット」を学びました。

・特定の時点までファイルを巻き戻す

$ git reset

今回の第7話では、間違えてリセットしてしまっても元に戻せる「リフログ」を学びます。一体どのようなコマンドなのでしょうか。このマンガを通して、わかばちゃんと一緒に知識を身につけていきましょう!

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

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

間違えて操作しても、reflog(リフログ)で元どおり!

f:id:itstaffing:20191223102840j:plain
f:id:itstaffing:20191223102844j:plain
f:id:itstaffing:20191223102847j:plain


リフログ(reflog)とは?

リフログとは、HEADの動き(自分自身が行った行動)を履歴にしたものです。具体的には、次のものが履歴として残ります。

・新規コミット(コミット、マージ、プル、リバートなど)
・ブランチの切り替え(チェックアウト)
・履歴の書き換え(リセット、リベースなど)

f:id:itstaffing:20190617145541j:plain
HEADについては前回の 第6話 で説明したとおりだな。
f:id:itstaffing:20190617145538j:plain
簡単に言えば「自分の操作履歴を見ることができる」ってことね。
f:id:itstaffing:20190617145541j:plain
そのとおり。リフログの手順としては『1. 操作履歴を見る → 2. 戻りたい地点の数字を指定してリセットする』のだ。
1. 操作履歴を見る

では、実践してみましょう。練習用リポジトリの中で、リフログコマンドを実行します。

$ git reflog

操作履歴一覧が表示されます。上に表示されているものほど新しい履歴です。

02f11b7 HEAD@{0}: reset: moving to 02f11b7
0488e28 HEAD@{1}: merge develop: Merge made by the 'recursive' strategy.
6978c20 HEAD@{2}: checkout: moving from develop to master
32275f0 (develop) HEAD@{3}: commit: 制作事例を追加
0e95561 HEAD@{4}: checkout: moving from master to develop
6978c20 HEAD@{5}: commit: 3回目のコミット
0e95561 HEAD@{6}: commit: 2回目のコミット
02f11b7 HEAD@{7}: commit (initial): はじめてのコミット
 
f:id:itstaffing:20190617145538j:plain
ふんふん。で、私はHEAD@{1}に戻りたいんだよね。
2. 戻りたい地点の数字を指定してリセットする

「resetの操作をする前(1つ前)に戻したい」といった場合、コマンドは次のとおりです。

$ git reset --hard HEAD@{1}

間違えて実行してしまったコマンドの1つ前まで戻れました!

f:id:itstaffing:20190617145538j:plain
リフログって便利だなー! Gitって、こんなにも融通がきくツールなんだね。
f:id:itstaffing:20190617145541j:plain
私も、このコマンドを初めて知ったときは感動したものだ。リフログは、マージ前のブランチを間違えて削除してしまったときにも使えるぞ。覚えておいて損はないコマンドだ。

まとめ

これで、間違えて操作してしまっても、あわてず元に戻すことができますね。

・HEAD の移動履歴一覧を表示

$ git reflog

・特定の時点までファイルを巻き戻す(nには戻りたい地点の数字を入力)

$ git reset --hard HEAD@{n}

Gitにはまだまだたくさんのコマンドがあります。
次回は、2019年夏にリリースされた新コマンド「switch」と 「restore」 について学んでいきましょう。

▼登場キャラクター紹介
f:id:itstaffing:20200122103525j:plain

▼わかばちゃんが登場する書籍

▼ これまでの「マンガでわかるGit」