【问题标题】:Git - Restore Files [duplicate]Git - 恢复文件 [重复]
【发布时间】:2019-07-21 01:27:16
【问题描述】:

我有自特定提交以来创建的目录和文件,但发现由于某种原因它们没有被推送到我的仓库。

我用-apush 编辑了我代码库中的所有内容。然后我得到一个错误,说我的 local 分支由于某种原因在远程分支后面,所以我push -f-ed 它。

现在我所有的新文件都消失了,我的本地代码库已经恢复,我不知道为什么。我没有从服务器上拉任何东西。我确实使用过一次diff,但只是为了查看本地分支和远程分支之间的变化。

我确信我的代码库过去的快照以某种方式保存在参考文献中。

如何检查是否存在,如果存在,如何恢复?

编辑:我遇到的问题不需要恢复到以前的 HEAD 位置,因为以前的一些提交本身存在问题。请删除“重复”标签。

更新:我认为我发现那些未跟踪的文件被保存为悬空 blob 或无法访问的对象。我目前正在检查这个方向。

【问题讨论】:

  • 这里听起来有些不对劲。也许你不应该做push -f - 如果其他人已经将提交推送到本地分支,那么本地分支位于远程分支之后是正常的。你应该使用git pull --rebase 在他们之后重播你的提交。听起来好像您重写了远程分支的历史,可能会丢失其他人的工作。但这并不能解释为什么您的代码库丢失了。正如@Shakil 建议的那样,如果您不确定如何处理,请使用git reflog 并在此处分享输出。
  • git commit -a 是一名足射手。仅在您完全确定时才使用它。这意味着永远不会。 (好吧,为了强调而略微夸大了,但在这种情况下,在经典的 add 之后的 git status 可能会显示您的文件,例如列出删除。)
  • 我是唯一一个开发单个 bbranch 的开发人员(主要使用我的 repo 作为本地代码的备份),所以我完全确定应该上传什么。我做了一个push - f 只是因为我没有看到我的代码被上传到远程分支上。而且我使用了完全相同的 git 命令,所以我不知道出了什么问题。我的本地分支在实际代码中领先,而不是落后,并且发生了变化。所以我不应该使用pull

标签: git


【解决方案1】:

您可以尝试git reflog link 并可以检查您当前.git 中的所有操作。即使您想查看之前的操作日志,您也可以简单地查看该操作的SH1

【讨论】:

  • 谢谢,我试试看。
猜你喜欢
  • 1970-01-01
  • 2010-10-12
  • 2011-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-09
  • 2019-03-09
相关资源
最近更新 更多