1. ホーム
  2. git

git リモートの reflog を見ることはできますか?

2023-10-05 19:52:44

質問

リモートの reflog を表示することは可能でしょうか。つまり、以下の出力が何であるかを知りたいのです。 git reflog が別のリモートマシンでどのように出力されるかを知りたいのです。

注意: 私はリモート追跡ブランチ (origin/master など) の reflog を求めているのではありません。 reflog が言うように が他のマシンで .

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

答えは基本的に "no"(そのマシン以外では)です。なぜなら reflog はある ref-name のローカルで作成された再割り当てのログだからです。 本質的に、あなたが git update-ref -m msg <name> <target> を実行するたびに、更新は......ローカルに記録されます。 .git/logs/<name> は行が追加されます。

$ git update-ref -m foo HEAD HEAD^
$ tail -1 .git/logs/HEAD
2418b6ba8fd0289933c9351260a272b8e410867f 8d945134b0cead535d66af29c8eb4228b5dc3763 [redacted] <[redacted]> 1334106483 -0600     foo

(メッセージの前にあるもの、この場合は foo はスペースではなくタブですが、SOのために拡大しました)。 概念的には、ブランチチップを移動させる他のすべてのものは git update-ref を呼び出します (シェルスクリプトで文字通りそれを行うものもあれば、すべてのファイル更新を行う C コードを呼び出すだけのものもあります) ... そして、すべての .git/logs のすべてが reflog を構成します。

もし基盤となる git:// や ssh:// プロトコルに、reflog を取得するためのものがあれば、それで済むのですが、私の知る限りではありません。