获取在git存储库上删除的先前提交

时间:2017-08-03 13:49:34

标签: eclipse git github version-control

昨天我上班的时候,我正在处理我家用电脑上的项目。问题是当我尝试克隆回购时,日食会崩溃。因此,我手动下载并初始化了回购,然后强制推送到我的家用电脑。这删除了repo上的所有历史记录和文件。我做了一些谷歌搜索并尝试恢复提交,但强制推送删除了提交历史记录,所以我只能回到强制推送提交。

我家里有一台计算机,由于这个错误而没有提取更新,我能够得到它的提交SHA。我在网上使用它,发现它仍然存在的最后一个版本,但是我无法提取该提交,因为它被“删除”并且不会显示在回购历史中。有没有办法可以使用上次好提交中的SHA并使主分支恢复我的历史记录?

3 个答案:

答案 0 :(得分:2)

更改HEAD(git存储库中的工作位置)时,它会在reflog中跟踪您的历史记录。在命令行中执行git reflog将显示完整的历史记录。您可以在git-scm.com

上详细了解相关信息

当您拥有所需的提交SHA时,您可以使用它进行git checkout。执行git checkout [SHA1]会将您带到git历史记录中的所需位置。从那里,您可以通过运行git checkout -b "new_branchname"来创建新的分支。

如果要将当前分支设置为提交,可以运行git reset --hard [SHA1]。这将重置当前分支,但是可以在reflog中找到先前的状态。

答案 1 :(得分:0)

我不建议将此作为一般练习但是......你应该能够从另一台计算机强行推动,从而将回购重置为原来的状态。昨天让你不想做任何你做的事情,同时让你的git仓库变得一团糟。

答案 2 :(得分:0)

由于您知道要恢复的正确版本,因此可以简化操作。

在您的本地仓库中,使用以下命令:

git reset --hard <commit sha value>
git push -f

注意:如果执行本地未初始化的命令(未从远程克隆),则应首先通过git fetch --all获取,然后执行这两个命令。

现在版本将在本地和远程需要时返回到最新版本。