git我可以查看遥控器的reflog吗?

git我可以查看遥控器的reflog吗?,git,Git,是否可以查看遥控器的reflog?也就是说,我想知道另一台远程机器上的git reflog的输出是什么 注意,我不是要远程跟踪分支(如origin/master)的reflog,我要的是另一台机器上的reflog说明。答案基本上是“否”(在该机器上除外),因为reflog是一些ref名称的本地重新分配日志。基本上,每次运行git update ref-m msg时,都会记录更新。。。本地:.git/logs/追加一行: $ git update-ref -m foo HEAD HEAD^ $ t

是否可以查看遥控器的reflog?也就是说,我想知道另一台远程机器上的
git reflog
的输出是什么

注意,我不是要远程跟踪分支(如origin/master)的reflog,我要的是另一台机器上的
reflog
说明。

答案基本上是“否”(在该机器上除外),因为reflog是一些ref名称的本地重新分配日志。基本上,每次运行
git update ref-m msg
时,都会记录更新。。。本地:
.git/logs/
追加一行:

$ git update-ref -m foo HEAD HEAD^
$ tail -1 .git/logs/HEAD
2418b6ba8fd0289933c9351260a272b8e410867f 8d945134b0cead535d66af29c8eb4228b5dc3763 [redacted] <[redacted]> 1334106483 -0600     foo
$git update ref-m foo HEAD^
$tail-1.git/原木/头
2418b6ba8fd0289933c9351260a272b8e410867f 8d945134b0cead535d66af29c8eb4228b5dc3763[修订]133410683-0600 foo
(在本例中,
foo
中,消息前面的内容不是空格,而是一个选项卡;我为此扩展了它)。从概念上讲,移动分支提示的所有其他操作都会调用
git update ref
来执行此操作(有些是shell脚本,实际上就是这样做的,有些只是调用执行所有文件更新的C代码)。。。而
.git/logs
中的所有内容都构成了reflog


如果底层的git://和/或ssh://协议中有一些东西可以让您访问reflog,那就可以了,但据我所知,没有。

远程机器很可能是github存储库

  • 首先使用Github的事件API检索提交SHA。
    curlhttps://api.github.com/repos///events

  • 识别任何分支中不再存在的孤立提交id的SHA

  • 接下来,使用Github的Refs API创建一个指向孤立提交的新分支

    curl-i-H“Accept:application/json“-H”内容类型:application/json“-X POST-d'{“ref”:“refs/heads/d-commit”,“sha”:“}”https://api.github.com/repos///git/refs

    将上述命令中的
    替换为步骤2中标识的SHA

  • 最后,
    git fetch
    将新创建的分支提取到本地存储库中。
    从那里你可以挑选或合并提交到你的工作中


  • 查看一个实际的例子。

    在GitHub上,如果您在获取合并的更改之前错误地在master上执行了一个
    git push--force
    ,同时删除了合并的分支(是的,我也遇到过这种情况),您可以查找合并的pull请求并转到提交部分,例如:

    然后继续上一次提交并单击
    按钮(标题为“在历史记录中的此时浏览存储库”)

    这将把你带到历史的“删除”点。从这里您可以:

    • 创建一个新分支,然后打开一个新的请求(如果更改来自另一个存储库,则建议这样做)
    • 打开一个新的请求(建议在存储库中提交)

    如果您可以访问远程系统的文件系统(通常是裸repos),那么您始终可以选择在那里运行git reflog。但拥有这样的访问权通常是不可能的。我习惯在git服务器上实现这一点(使用只读文件共享),只是为了能够在服务器端查看reflog。非常感谢!对于那些不太喜欢使用命令行的人,您也可以通过打开>绕过步骤3,直接在“树:”下拉列表中从中创建一个新分支。然后正常获取它。如果您收到
    “消息”:“未找到”
    错误,这意味着您需要进行身份验证,例如通过传递访问令牌查询字符串。对我来说,跟踪孤立提交id的SHA的最简单方法是查看CircleCI上的上一个构建(或[在此插入CI服务])。是有关如何进行身份验证的说明。此答案似乎解决了与问题不同的问题。它似乎解决了如何恢复无法从任何分支或标记访问的提交,而问题是如何查看reflog(分支或标记引用的历史记录)。另一个解决方案是使用
    git push--force with lease