恢复对git的最后操作?

时间:2019-09-03 09:38:28

标签: git github

我是git的新手,我将文件推送到存储库中,但是它只是覆盖并删除了小组存储库中的所有工作,我该如何撤消该操作。在没有任何人注意的情况下尽快。

当我尝试git还原时,它给出了错误的对象。

我逐步使用

clone <repsurl>

在git bash中 比我将一些文件添加到本地目录并使用命令

git add <somfile>

git commit -m "somecomment"

最后

git push

我认为我的错误没有使用

git add .

以任何方式结束时只有我的文件在销售代表中。

1 个答案:

答案 0 :(得分:1)

执行git push时,您不会覆盖文件,而只是添加文件的版本。该版本的图片是commit,由commit hash标识。

我强烈建议您阅读https://git-scm.com/docs。简短,它将为您回答很多问题。

因此,要回答您的问题:如何撤消此操作?问题应该是:如何找回以前的文件?与往常一样,在git中,有很多方法可以实现目标。我不会在此处发布git教程,但是我将尝试为您提供一些基本命令,这些命令将使您可以执行所需的操作。但是,我坚持认为,如果您不完全理解它们,则应该阅读文档。

我将假定您的工作区域是干净的,也就是说,所有内容都已提交并推送到您的遥控器。本地和远程存储库已完全同步。

执行git log时,您可以看到您在分支(和父分支)上所做的所有提交。一些有用的变体:git push -10 --oneline。这以简短版本(每次提交一行)显示了最近的10次提交。对于每个提交,您将看到提交哈希(提交的标识符)。要签出该提交,可以执行以下操作:

git checkout <commit_hash>

之后,文件的版本就是与该提交对应的文件的版本。但是,请注意,您不再位于分支机构上。如果您想保留在分支上,但将文件重置为给定提交的版本,则可以执行以下操作:

git reset --hard <commit_hash>

有时候,进行软重置非常有用:

git reset --soft <commit_hash>

这会将您的最后一次提交重置为<commit_hash>所标识的提交,但不会更改文件的版本。相反,这些更改位于分阶段区域。

还有一些有用的变体,例如:

git reset --soft HEAD~1

最后一条命令将对先前的提交(HEAD指向的提交之前的提交)进行软复位。