Git-还原文件

Git-还原文件,git,Git,在一次特定的提交之后,我创建了一些目录和文件,发现它们由于某种原因没有被推送到我的repo 我用-a提交了代码库中的所有内容,并推送了它。然后有一次我得到一个错误,说我的本地分支出于某种原因在远程分支后面,所以我推-f-ed它 现在我所有的新文件都消失了,我的本地代码库也恢复了,我不知道为什么。我没有从服务器上取任何东西。我曾经使用过diff,但只是为了查看本地分支和远程分支之间的更改 我确信我的代码库的过去快照以某种方式保存在参考文献中 我如何检查它是否是,如果是,我如何还原它 编辑:我的问题

在一次特定的提交之后,我创建了一些目录和文件,发现它们由于某种原因没有被推送到我的repo

我用-a提交了代码库中的所有内容,并推送了它。然后有一次我得到一个错误,说我的本地分支出于某种原因在远程分支后面,所以我推-f-ed它

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

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

我如何检查它是否是,如果是,我如何还原它

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


更新:我想我发现那些未跟踪的文件被保存为悬挂的blob或不可访问的对象。我正在检查这个方向。

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

这里听起来有些不对劲。也许您不应该执行push-f操作——如果有人将提交推到远程分支中,本地分支位于远程分支后面是正常的。您应该使用git pull-rebase在提交之后重播您的提交。听起来好像您已经重写了远程分支的历史记录,可能会丢失其他人的工作。但这并不能解释为什么你的代码库丢失了。正如@Shakil所建议的,如果您不确定如何使用git reflog,请使用git reflog并在此处共享输出。git commit-a是一个射击游戏。只有当你绝对确定的时候才使用它。这意味着永远不会。好吧,为了强调这一点,有点言过其实,但在这种情况下,在经典添加之后的git状态可能会显示出要删除的文件。例如,我是唯一一个在单个BBbranch上工作的开发人员,主要使用我的repo作为本地代码的备份,所以我完全确定应该上传什么。我做了一个push-f,只是因为我没有看到我的代码被上传到远程分支上。我使用了完全相同的git命令,所以我不知道是什么搞砸了。我当地的分支机构在实际代码中领先,而不是落后,并且发生了变化。所以我不应该用拉力。谢谢,我会试试的。