git我可以查看远程的reflog吗?

时间:2012-04-10 23:54:59

标签: git

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

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

3 个答案:

答案 0 :(得分:32)

答案基本上是“否”(在该机器上除外),因为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代码)......以及{{{{1}中的所有内容1}}组成了reflog。

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

答案 1 :(得分:30)

关于远程机器是github存储库的可能性

  1. 首先使用Github的Events API来检索提交SHA curl https://api.github.com/repos/<user>/<repo>/events

  2. 识别任何分支中不再存在的孤儿提交ID 的 SHA。

  3. 接下来,使用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>

  4. 最后git fetch新创建的分支到您的本地存储库 从那里你可以挑选或合并提交回你的工作。

  5. 查看this article以获取实际示例。

答案 2 :(得分:2)

在GitHub上,如果你错误地在主服务器上git push --force之前获取合并的更改,同时合并的分支被删除(是的,它发生在我身上),你可以寻找合并的拉请求并转到提交部分,例如:

enter image description here

然后你继续最后一次提交,然后点击<>按钮(标题为#34;浏览历史记录中的存储库&#34;)。

这将带您进入&#34;已删除&#34;历史的一点。从这里你可以:

  • 创建一个新分支,然后打开一个新的拉取请求(建议如果更改来自另一个存储库)。
  • 打开一个新的拉取请求(推荐用于存储库中的提交)。