gitコマンドの使い方 ~ git reflog ~

git reflog コマンド概要

HEADやブランチの移動履歴の確認や整理を行うコマンドです。

git reflogはこのコマンド単体で利用するより、他のコマンド(例えばgit diffなど)と合わせて利用することが多いです。

git reflog コマンドの使い方

git reflog show [branch]

git reflog delete [ref@{xxx}]

サブコマンドは上記のshowやdelete以外にも複数ありますが、私が利用することが多いサブコマンドはshowのみです。

サブコマンドを省略するとデフォルトでshowが指定されますので、git reflogと実行することが多いですね。

git reflog サブコマンド

サブコマンドなし(show) [branch]

branchを指定しない場合はHEADの移動履歴が表示されます。

$ git reflog
0e131df (HEAD -> master) HEAD@{0}: commit: file-B upd
5105e81 HEAD@{1}: reset: moving to HEAD
5105e81 HEAD@{2}: merge develop: Merge made by the 'recursive' strategy.
137bd4b HEAD@{3}: checkout: moving from develop to master
3aa625a (develop) HEAD@{4}: checkout: moving from master to develop
137bd4b HEAD@{5}: checkout: moving from develop to master
3aa625a (develop) HEAD@{6}: checkout: moving from master to develop
137bd4b HEAD@{7}: commit: file-D.txt
6c8045d HEAD@{8}: checkout: moving from develop to master
3aa625a (develop) HEAD@{9}: commit: file-C add
6c8045d HEAD@{10}: checkout: moving from master to develop
6c8045d HEAD@{11}: commit: fileB add
12a5485 HEAD@{12}: commit (initial): file-A add

branchを指定した場合はそのブランチの移動履歴が表示されます。

$ git reflog master
0e131df (HEAD -> master) master@{0}: commit: file-B upd
5105e81 master@{1}: merge develop: Merge made by the 'recursive' strategy.
137bd4b master@{2}: commit: file-D.txt
6c8045d master@{3}: commit: fileB add
12a5485 master@{4}: commit (initial): file-A add

delete [ref@{xxx}]

指定した履歴を削除したい場合に実行します。

以下は、削除前にgit reflog showで確認し「HEAD@{11}」の履歴を削除する場合の実行例です。

$ git reflog show
0e131df (HEAD -> master) HEAD@{0}: commit: file-B upd
5105e81 HEAD@{1}: reset: moving to HEAD
5105e81 HEAD@{2}: merge develop: Merge made by the 'recursive' strategy.
137bd4b HEAD@{3}: checkout: moving from develop to master
3aa625a (develop) HEAD@{4}: checkout: moving from master to develop
137bd4b HEAD@{5}: checkout: moving from develop to master
3aa625a (develop) HEAD@{6}: checkout: moving from master to develop
137bd4b HEAD@{7}: commit: file-D.txt
6c8045d HEAD@{8}: checkout: moving from develop to master
3aa625a (develop) HEAD@{9}: commit: file-C add
6c8045d HEAD@{10}: checkout: moving from master to develop
6c8045d HEAD@{11}: commit: fileB add
12a5485 HEAD@{12}: commit (initial): file-A add

$ git reflog delete HEAD@{11}

$ git reflog show
0e131df (HEAD -> master) HEAD@{0}: commit: file-B upd
5105e81 HEAD@{1}: reset: moving to HEAD
5105e81 HEAD@{2}: merge develop: Merge made by the 'recursive' strategy.
137bd4b HEAD@{3}: checkout: moving from develop to master
3aa625a (develop) HEAD@{4}: checkout: moving from master to develop
137bd4b HEAD@{5}: checkout: moving from develop to master
3aa625a (develop) HEAD@{6}: checkout: moving from master to develop
137bd4b HEAD@{7}: commit: file-D.txt
6c8045d HEAD@{8}: checkout: moving from develop to master
3aa625a (develop) HEAD@{9}: commit: file-C add
6c8045d HEAD@{10}: checkout: moving from master to develop
12a5485 HEAD@{11}: commit (initial): file-A add

git reflog の全てのオプションを確認する方法

以下のコマンドを実行するとブラウザでgit reflogのヘルプページが表示される

git reflog --help

Gitコマンドの使い方一覧

Git設定git config ~Gitリポジトリの設定~
初期化git init ~ローカルリポジトリの構築~
ログ&設定値確認git log ~commitログの履歴確認~
git status ~作業ディレクトリとステージングエリアの更新状態確認~
git diff ~commitやファイルの差分確認~
git show ~commitの内容確認~
git remote ~リモート追跡ブランチのリモートリポジトリの設定確認~
git reflog ~HEADやブランチの移動履歴の確認と整理~
ステージングエリアの操作git add ~ステージングエリア(インデックス)にファイル追加~
git ls-files ~ステージングエリア(インデックス)のファイル一覧表示~
git rm ~ステージングエリア(インデックス)のファイル削除~
ローカルリポジトリの操作git commit ~blobやtreeなどをまとめたcommitを作成~
git merge ~指定したブランチの内容を取り込み新しいcommitを作成~
git rebase ~commitの履歴の整理~
git cherry-pic ~特定のcommitの変更内容だけを取り込む~
git cat-file ~リポジトリのオブジェクト(commit,tree,blob)の内容表示~
git revert ~指定したcommitを取り消すcommitを作成~
commitのエイリアスなどgit branch ~commitツリーの枝(ブランチ)を作成~
git tag ~リリースなどのタイミングで特定のcommitに名前を付ける~
git stash ~commitを作成する前の変更内容を一時保存~
commitの内容をステージングエリアや作業ディレクトリに反映git checkout ~commitをステージングエリアと作業ディレクトリに展開~
git reset ~HEADの位置やステージングエリアと作業ディレクトリの内容を変更~
リモートリポジトリとのやり取りgit clone ~リモートリポジトリからローカルリポジトリ作成~
git fetch ~リモートリポジトリのブランチをローカルリポジトリに反映~
git pull ~git fetchとgit mergeを同時に行う~
git push ~ローカルリポジトリのブランチをリモートリポジトリに反映~