Git,如何覆盖提交记录。

7
我弄糊了我的应用程序,最终做了一个
git checkout <commit number>

为了回到我想要的位置。 当我执行 git status 命令时,它会显示:
 Your branch is behind 'origin/master' by 5 commits, and can be fast-forwarded.

我猜我距离最新提交还有5个提交。有没有办法让我最近的第5个提交成为最新的提交?基本上是覆盖或丢弃前4个提交的所有内容?
更新。
我执行了一个
git reset --hard <commit number>

但是我该如何将代码推送到我的仓库呢?它提示...
To prevent you from losing history, non-fast-forward updates were rejected

我不想执行合并操作,我实际上想要清除我最近的4个提交记录。

谢谢。


可能是重复的问题:如何将git存储库回滚(重置)到特定提交? - Basilevs
十年前,我也有同样的问题...Git 的永恒!谢谢! - anthony galligani
3个回答

6
您可以始终使用 -f 选项强制推送:
git push -f origin master

当然,要小心,因为这将会破坏历史记录。

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


这么简单的修复!谢谢。 - anthony galligani

1
git checkout ORIG_HEAD

这应该可以让你回到最近一次检出后的状态。

如果这不起作用,你还可以查看 git reflog。它会显示你最近的变基、检出等操作列表,你可以找到要返回的提交的 SHA。


不要忘记,co是checkout的别名。 - I82Much

1
git reset --hard <commit number>

1
我已经重置到我想要的版本。但是当我尝试进行git push时,它会显示以下信息:为了防止您丢失历史记录,非快进式更新被拒绝。我基本上想要删除前4个提交或撤销所有更改。 - Sasha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接