0

我有一个 git 存储库,我在其中进行了很多更改,并将其推送到远程位置。

我希望将存储库重置为第一次提交的 3 次提交,将其推送到远程分支。我正在考虑执行以下操作:-

  • git 重置
  • git push 起源大师

对此有几个疑问?

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

谢谢。

[编辑] 目前我是这个项目的独立开发者。此外,还有很多提交,所以我不必手动恢复每个提交。

4

2 回答 2

1

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

但是如果你是这个项目的唯一开发者,你可以删除提交。为此,您可以使用以下git reset命令:

git reset --hard hash

其中 hash 是您要返回的提交哈希。选项--hard是在您通过提交哈希后几乎完全删除提交。

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

git push -f origin master

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

于 2013-02-21T06:04:56.373 回答
1

您可以使用

git reset --hard <3rd commit>

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

然后使用

git push -f origin master

强制更新遥控器。

于 2013-02-21T06:06:12.390 回答