我意外地跑了:
git push origin +master
尝试将文件推送到我的Github仓库时。此命令重置所有提交历史记录并删除一些文件。
我想知道是否有办法将我的回购重置为certain commit having the hash 94b90dc1121ce477131fa60ffdc234591554b6c8
。
答案 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