git,如何覆盖提交

时间:2012-04-30 00:53:03

标签: git

我搞砸了我的应用程序并且做了一个

git checkout <commit number>

回到我想去的地方。

当我执行git状态时,它说

 Your branch is behind 'origin/master' by 5 commits, and can be fast-forwarded.

我想我已经在最近一次提交的第5天了。有没有办法让我最近一次提交我的第五次?几乎要覆盖或丢弃我前四次提交的所有内容?

更新。

我做了

git reset --hard <commit number>

但是如何推送到我的存储库?它说......

To prevent you from losing history, non-fast-forward updates were rejected

我不想执行合并,我非常想要消除我最新的4次提交

感谢

3 个答案:

答案 0 :(得分:4)

您始终可以使用-f选项强制推送:

git push -f origin master

但当然要小心,因为破坏历史记录。

同时确保同时指定远程和分支名称,因为没有它,默认情况下git会尝试强制将所有分支推送到给定(或上游)远程。

答案 1 :(得分:1)

git checkout ORIG_HEAD

应该让您回到最近结账后的位置。

如果这没有帮助,您还可以查看git reflog。它会显示你最近的rebase,checkout等列表,你可以找到你想要回复的提交的SHA。

答案 2 :(得分:1)

git reset --hard <commit number>