如何将我的远程git存储库还原为某个提交?

时间:2015-12-03 00:34:51

标签: git github

我意外地跑了:

git push origin +master

尝试将文件推送到我的Github仓库时。此命令重置所有提交历史记录并删除一些文件。

我想知道是否有办法将我的回购重置为certain commit having the hash 94b90dc1121ce477131fa60ffdc234591554b6c8

2 个答案:

答案 0 :(得分:12)

git checkout master
git reset --hard 94b90dc1121ce477131fa60ffdc234591554b6c8
git push -f origin master

以下是对命令的解释......

首先,让我们确保你在主分支上,所以使用checkout命令让你的HEAD指向掌握。

什么是HEAD? 它基本上是Git维护的指针,指向你当前在Git树中的位置。

事实上,大多数这些概念(如HEAD和分支)只是指向树中不同点的指针。 从命令行执行gitk以便以漂亮的图形格式查看树。

接下来,让你的reset指向您在原始问题中提到的确切提交的HEAD指针。这基本上会使文件系统上的文件与提交相匹配。

小心reset --hard但是......如果你有出色的工作,或者尚未推送到服务器的提交,这可能会使他们无法接触到#34; (再考虑那棵树)......如果你失去了#34;通过此命令提交,您通常可以使用reflog来恢复它们。

最后,将主分支的本地状态推送到GitHub的主分支。 -f就在那里,因为你正在重写分支的历史,所以你需要告诉Git" force"它

答案 1 :(得分:3)

Jonathan的回答是正确的。另一种实现相同目的的方法是:

git push -f origin 94b90dc1121ce477131fa60ffdc234591554b6c8:master