git,如何覆盖提交


git, how to overwrite commits

我把应用程序搞砸了,结果做了一个

1
git checkout <commit number>

回到我想去的地方。

当我做Git状态时,它说

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

我想我最近一次的承诺是在5号。有没有办法让我的第五个从最近的承诺我最近的一个?几乎可以覆盖或放弃我前四次提交的所有内容?

更新。

我做了一个

1
git reset --hard <commit number>

但是我怎样才能推送到我的存储库呢?上面写着…

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

我不想执行合并,我很想清除最近4次提交

谢谢


您可以使用-f选项强制执行推送:

1
git push -f origin master

但当然要小心,因为这会毁了历史。

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


1
git reset --hard <commit number>


1
git checkout ORIG_HEAD

应该能让你在最近一次结账后回到原来的位置。

如果没有帮助,您也可以查看git reflog。它将向您显示最近的钢筋、签出等列表,您可以找到要返回的提交的sha。