我有一个git存储库,我在其中做了很多更改,然后推送到远程位置。
我希望将存储库从第一个重置为3提交,将其推送到远程分支。我正在考虑做以下事情: -
对此有几个疑问?
感谢。
[编辑] 我现在是这个项目的独立开发人员。还有很多提交,所以Id而不是手动必须还原它们中的每一个。
答案 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
强制更新遥控器。