是否可以查看遥控器的 reflog?也就是说,我想知道git reflog
另一台远程机器上的输出是什么。
reflog
请注意,我不是要远程跟踪分支(例如 origin/master)的reflog ,我要的是另一台机器上的内容。
是否可以查看遥控器的 reflog?也就是说,我想知道git reflog
另一台远程机器上的输出是什么。
reflog
请注意,我不是要远程跟踪分支(例如 origin/master)的reflog ,我要的是另一台机器上的内容。
如果远程机器是 github 存储库,
首先使用 Github 的事件 API 来检索提交 SHA。
curl https://api.github.com/repos/<user>/<repo>/events
识别不再存在于任何分支中的孤立提交 ID 的 SHA 。
接下来,使用 Github 的 Refs API 创建一个指向孤立提交的新分支。
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d '{"ref":"refs/heads/D-commit", "sha":"<orphan-commit-id>"}' https://api.github.com/repos/<user>/<repo>/git/refs
用步骤 2 中确定的 SHA替换<orphan-commit-id>
上述命令。
最后git fetch
将新创建的分支放入您的本地存储库。
从那里你可以挑选或合并提交到你的工作中。
查看本文以获取实际示例。
答案基本上是“否”(在那台机器上除外),因为 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
来执行此操作(有些是 shell 脚本,实际上是这样做的,其他只是调用执行所有文件更新的 C 代码)......并且所有内容都.git/logs
构成了 reflog。
如果底层 git:// 和/或 ssh:// 协议中有一些东西可以让你访问 reflog,那会这样做,但据我所知没有。