git我可以查看遥控器的reflog吗?
是否可以查看遥控器的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
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存储库
curlhttps://api.github.com/repos///events
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中标识的SHAgit fetch
将新创建的分支提取到本地存储库中。从那里你可以挑选或合并提交到你的工作中
查看一个实际的例子。在GitHub上,如果您在获取合并的更改之前错误地在master上执行了一个
git push--force
,同时删除了合并的分支(是的,我也遇到过这种情况),您可以查找合并的pull请求并转到提交部分,例如:
然后继续上一次提交并单击
按钮(标题为“在历史记录中的此时浏览存储库”)
这将把你带到历史的“删除”点。从这里您可以:
- 创建一个新分支,然后打开一个新的请求(如果更改来自另一个存储库,则建议这样做)
- 打开一个新的请求(建议在存储库中提交)
“消息”:“未找到”
错误,这意味着您需要进行身份验证,例如通过传递访问令牌查询字符串。对我来说,跟踪孤立提交id的SHA的最简单方法是查看CircleCI上的上一个构建(或[在此插入CI服务])。是有关如何进行身份验证的说明。此答案似乎解决了与问题不同的问题。它似乎解决了如何恢复无法从任何分支或标记访问的提交,而问题是如何查看reflog(分支或标记引用的历史记录)。另一个解决方案是使用git push--force with lease