Git - 恢复文件 [重复]
Posted
技术标签:
【中文标题】Git - 恢复文件 [重复]【英文标题】:Git - Restore Files [duplicate] 【发布时间】:2019-07-21 01:27:16 【问题描述】:我有自特定提交以来创建的目录和文件,但发现由于某种原因它们没有被推送到我的仓库。
我用-a
和push
编辑了我代码库中的所有内容。然后我得到一个错误,说我的 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 - 恢复文件 [重复]的主要内容,如果未能解决你的问题,请参考以下文章