Git - 恢复文件 [重复]

Posted

技术标签:

【中文标题】Git - 恢复文件 [重复]【英文标题】:Git - Restore Files [duplicate] 【发布时间】: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 【参考方案1】:

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

【讨论】:

谢谢,我试试看。

以上是关于Git - 恢复文件 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Git:将单个文件还原为其最后一次提交[重复]

在 git 中,如何将文件恢复到 3 次提交前?

git如何恢复本地删除的文件

git删除之后怎么恢复

Git:恢复一个已经在提交中被删除的文件

恢复 git 存储库/提交等