完全重置git存储库

时间:2013-02-21 05:58:41

标签: git

我有一个git存储库,我在其中做了很多更改,然后推送到远程位置。

我希望将存储库从第一个重置为3提交,将其推送到远程分支。我正在考虑做以下事情: -

  • git reset
  • git push origin master

对此有几个疑问?

  • 这是正确的方法吗?
  • 我删除了某些文件,并在第3次提交后添加了一些文件(从第一次开始)。我希望将所有内容更改回第3次提交的状态(取回已删除的文件,删除新添加的文件)。我怎么能这样做?

感谢。

[编辑] 我现在是这个项目的独立开发人员。还有很多提交,所以Id而不是手动必须还原它们中的每一个。

2 个答案:

答案 0 :(得分:1)

由于您已将文件发送到远程存储库,因此执行git reset不是一个好主意,因为其他开发人员应更新其本地存储库并获取新更新。最好的解决方案是执行git revert,这是一个生成新提交的命令,用于撤消先前提交的操作。有关详细信息,请查看此link

但如果您是此项目的唯一开发人员,则可以删除提交。为此,您可以使用git reset命令:

git reset --hard hash

其中hash是您要返回的提交哈希。选项--hard几乎完成在您传递的提交哈希之后删除提交。

在更改项目历史记录时,您无法执行简单的push。您将需要标志-f来强制更新:

git push -f origin master

但是,某些远程存储库有一些hook禁止您强制更新历史记录。您需要删除此挂钩以允许您执行历史记录更新。如果您不能这样做,则需要使用git revert命令。

答案 1 :(得分:1)

您可以使用

git reset --hard <3rd commit>

获取所有文件并删除新添加的文件。

然后使用

git push -f origin master

强制更新遥控器。