git log を使って特定のコミットまで戻す

2021/12/11

git log コマンドは今までのコミット履歴を確認することができるコマンドです。

「誰が」「いつ」「どのように」変更したか確認できるコマンドです。

git log コマンドは今までのコミットをコミットメッセージの一覧という形で表示します。

そのため、一目で何をしたのかわかるようなコミットメッセージを書く必要があります。

今回はこの git log コマンドでファイルの変更履歴を確認してみます。

 
INDEX

 

使用してみる

とりあえず、何かファイルを作成してコミットしてログを見てみます。


# 開発用ブランチにチェックアウト
$ git checkout develop

# ファイルを作成
$ touch sample2.html

# ステージングエリアに移動
$ git add sample2.html

# コミット
$ git commit -m "create sample2.html"

# コミット履歴を確認
$ git log

 

ログを確認する

ログの構成は以下のようになっています。

ポイント

エンターを押すと、1行ずつ見えます。「q」を押すとログ表示が終わります。

 

ログを見やすくしたい

デフォルトだと少し見にくかったりします。

その場合はオプションをつけて整形することができます。

最近のログを1件だけ出力する

$ git log -1 

 

ログを1行で出力する

$ git log --oneline

 

組み合わせる

「ログを1行で出力」+「ログを3行で出力」


$ git log --oneline -3

 

よく使うオプション(最終形)

$ git log --oneline --graph --decorate

オプション 意味
--graph git log の出力に commit の軌跡を見せてくれるオプション
--decorate git log の結果に「今存在する branch と HEAD の位置」を表示してくれるようになる

 

実践編(特定のコミットまで戻したい)

個人的には特定のコミットまで戻したいときにこのコマンドをよく使います。

git reset コマンドで戻すときに、コミット番号(ハッシュ値)を指定しないといけないのですが、そのときに git log コマンドを使います。


# 戻す対象のハッシュ値を調べる
$ git log --oneline -3

# 指定したハッシュ値のコミットまで戻す
$ git reset --hard {ハッシュ値}

# ちゃんと消えたか確認
$ git log --oneline -3

ポイント
resetコマンドのオプション

--hard コミット、インデックス、ファイルの変更をすべて削除する。
--mixed コミット、インデックスを削除。ファイルの変更だけは残す。
--soft コミットだけを削除する。インデックス、ファイルの変更は残す。
 

間違えて git reset した場合

先ほどの例でgit resetコマンドを使って前のコミットに戻しました。
しかし、「実はそのgit resetは間違いだった」というときのコマンドも用意されています。


# 直前のリセットを取り消す
$ git reset --hard ORIG_HEAD

 
以上です。

Git おススメ教材(by Udemy)
動画でプログラミング学習!ドットインストール、Schoo、Udemyのどれがいい?
 
Udemyを使ったLaravel学習方法

Git: もう怖くないGit!チーム開発で必要なGitを完全マスター

Gitの基本コマンド、ブランチやマージ、コンフリクトの解消方法、リベース、GitHubを利用した開発フローなど、チーム開発に必要なGitの全てが含まれています。仕組みを図解で理解した上でハンズオンで実践するので、もうGitは怖くありません。
4.2(6409)

 

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-環境構築