無料の Git クライアントソフトウェア TortoiseGit で、前回、HEAD (現在のコミット位置を指す情報) を最新よりひとつ前のコミット位置(リビジョン)に移動した後に、ログに表示されなくなった最新のコミット位置を RefLog で表示して、最新のコミット位置に HEAD を戻す手順を紹介します。

※ TortoiseGit-2.17.0.2-64bit を使用します。
前回の記事
前回は TortoiseGit で git reset –soft HEAD~ コマンドと同様の処理を行うリセットメニューを実行して、前後で、コミット履歴の確認をしました。
前回行った部分までを念のためフォルダごとコピーしてから、今回の作業を行います

log と RefLog の違い
git log コマンドではコミット位置を指定しないと、HEAD が指す現在のコミット位置からさかのぼれるコミット履歴を表示するためです。
List commits that are reachable by following the
parentlinks from the given commit(s), but exclude commits that are reachable from the one(s) given with a ^ in front of them. The output is given in reverse chronological order by default.指定されたコミットから親リンクをたどることで到達可能なコミットをリストしますが、先頭に ^ を付けて指定されたコミットから到達可能なコミットは除外します。デフォルトでは、出力は新しい順に表示されます。Git – git-log Documentation と Google 翻訳
git reflog コマンドや、 git log –reflog で確認できる reflog は、 HEAD やブランチ先端の動きの履歴です。
前回行った HEAD (現在のコミット位置)を1つ前のコミット位置に戻した履歴も、その前にコミットして最新のコミット位置を HEAD が参照していた履歴も確認できます。
This command manages the information recorded in the reflogs.
このコマンドは、reflog に記録された情報を管理します。Git – git-reflog Documentation
- reflog(参照ログ)とは HEAD やブランチ先端の動きの履歴
- 各個人のローカルリポジトリに存在
- ブランチの切り替え、新たに加えられた変更のプル、履歴の書き換え、あるいは単なる新規コミットの実行などを記録
git reflogについてまとめてみる
実際にコマンドプロンプトを開いて git log –reflog コマンドを実行して確認すると、前回 HEAD を最新の3回目のコミット位置から、1つ前の2回目のコミット位置に移動した後でも、HEAD の指す2回目のコミット位置より新しい3回目のコミット位置も表示されました。
ここで表示されるハッシュ値を用いて、 git reset –soft ハッシュ値 を入力することで、最新のコミット位置に戻ることができます。

以下は、 git log の結果です。
前述のとおり、 HEAD 以前のコミットの履歴が表示されます。
HEAD を1つ前のコミット位置に移動したため、最新の3回目のコミットの情報は表示されていません。
G:\Dev\StudyTortoiseGit\Repo1Soft>git log
commit 1f1f4ddfa2e2b5feda69353cc8198b6a5903e2e4 (HEAD -> master)
Author: さくらくらうど <メールアドレス>
Date:   Mon Apr 28 18:18:31 2025 +0900
    file.txt に hello, world を追記。
commit e2829b8d833c07a9849bc0f4a857c69791e2bb50
Author: さくらくらうど <メールアドレス>
Date:   Mon Apr 28 18:12:16 2025 +0900
    file.txt をバージョン管理に追加します。git log –reflog で reflog の情報を表示すると、HEAD の参照ログに記録されていた最新の3回目のコミットを指すハッシュ値などを確認できました。
–reflog
Pretend as if all objects mentioned by reflogs are listed on the command line as
<commit>.reflogs で言及されているすべてのオブジェクトがコマンド ラインに <commit> としてリストされているかのように見せかけます。Git – git-reflog Documentation
G:\Dev\StudyTortoiseGit\Repo1Soft>git log --reflog
commit fa795f083559ba016c00be644bd24601ac587f41
Author: さくらくらうど <メールアドレス>
Date:   Tue Jun 3 09:38:16 2025 +0900
    file.txt に 2 行目を追加
commit 1f1f4ddfa2e2b5feda69353cc8198b6a5903e2e4 (HEAD -> master)
Author: さくらくらうど <メールアドレス>
Date:   Mon Apr 28 18:18:31 2025 +0900
    file.txt に hello, world を追記。
commit e2829b8d833c07a9849bc0f4a857c69791e2bb50
Author: さくらくらうど <メールアドレス>
Date:   Mon Apr 28 18:12:16 2025 +0900
    file.txt をバージョン管理に追加します。前回の結果を TortoiseGit のログと RefLog で確認
前回、git reset –soft HEAD~ コマンドと同等のことを TortoiseGit で行い、HEAD (現在のコミット位置を指す情報) を最新よりひとつ前のコミット位置(リビジョン)に移動しました。
その状態を、前の章の git コマンドと同様の TortoiseGit のメニューで確認します。
エクスプローラで、リポジトリフォルダを右クリックして表示されるメニュー「TortoiseGit」→「ログを表示」で、前の章で行った git log と同様の内容を表示します。

リビジョンログダイアログ(ログメッセージ)には、 git log コマンドの結果と同じく、 HEAD 以前(2回目のコミット)の履歴しか表示されず、3回目の最新のコミットについては表示されません。
確認したら、OK ボタンで閉じます。

エクスプローラで、リポジトリフォルダを右クリックして表示されるメニュー「TortoiseGit」→「RefLog を表示」で、前の章で行った git log –reflog と同様の内容を表示します。

RefLog ダイアログには、前の章の git log –reflog と同じく、最新の3回目のコミットの情報も表示されています。
git log –reflog で確認したのと同じと思われるハッシュ値 (SHA-1) も確認できます。

今回はここまで
後半に続きます。
参照サイト Thank You!
- Git
- TortoiseGit – Windows Shell Interface to Git
- Git – リセットコマンド詳説
- リビジョングラフ
- リビジョンログダイアログ
- Git – git-log Documentation
- Git – git-reset Documentation
- 【やっとわかった!】gitのHEAD^とHEAD~の違い #Git – Qiita
- Git – git-checkout Documentation
- git reflogについてまとめてみる
記事一覧 → Compota-Soft-Press

 
     
 
コメント