1. ホーム
  2. git

[解決済み] git reflogとlogの違いは何ですか?

2022-03-06 06:50:11

質問

ログはコミットログを表示し、reflogはreflog情報を管理するとマニュアルに書いてあります。reflog情報とは一体何なのでしょうか、またlogにないものは何なのでしょうか?ログははるかに詳細に見えます。

どのように解決するのですか?

git log は、現在の HEAD とその先祖を表示します。つまり、HEAD が指しているコミット、その親、その親......といった具合に表示されます。各コミットの親を再帰的に検索し、レポの先祖をさかのぼります。

(実際には、複数の親を持つコミットもあります。より代表的なログを見るには、以下のようなコマンドを使用します。 git log --oneline --graph --decorate .)

git reflog は、HEAD の先祖をまったくたどらない。reflog は HEAD が指し示したコミットの一覧を並べたもので、あなたのリポジトリのアンドゥの履歴となります。reflog はレポの一部ではなく (コミットとは別に保存されます)、プッシュやフェッチ、クローンにも含まれません。

余談ですが、reflogを理解することは、一度コミットしたレポのデータを失うことがないということです。誤って古いコミットにリセットしたり、間違ってリベースしたり、その他視覚的にコミットを削除してしまうような操作をした場合、reflog を使って以前の状態を確認し git reset --hard に戻り、以前の状態を復元することができます。refはコミットだけでなく、その背後にあるすべての履歴を意味することを覚えておいてください。