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設定
ログ&設定値確認
ステージングエリアの操作
ローカルリポジトリの操作
commitのエイリアスなど
commitの内容をステージングエリアや作業ディレクトリに反映