我是git的新手,我将文件推送到存储库中,但是它只是覆盖并删除了小组存储库中的所有工作,我该如何撤消该操作。在没有任何人注意的情况下尽快。
当我尝试git还原时,它给出了错误的对象。
我逐步使用
clone <repsurl>
在git bash中 比我将一些文件添加到本地目录并使用命令
git add <somfile>
git commit -m "somecomment"
最后
git push
我认为我的错误没有使用
git add .
以任何方式结束时只有我的文件在销售代表中。
答案 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
指向的提交之前的提交)进行软复位。