推送到远程后,如何用新提交覆盖或替换提交?

How can I overwrite or replace a commit with new one once I have pushed to remote?

所以我正在和一个团队一起做一个敏感的项目,我们所有的资源都在 Github 上。我最近推送了一个提交,后来意识到我的推送有很多错误。我已经在我的本地副本上修复了所有这些错误,并准备再次推送。但是有什么办法可以推送和覆盖我的最后一次提交吗?我的原因是,我不希望其他人查看我的初始提交及其所做的更改...

基本上我想用我的新提交覆盖旧提交..所以没有关于旧提交的信息留给其他组成员看。

通常,一旦 Github(或 public 回购)出现问题,就没有办法让 确定 没有其他人有问题提交。

如果您只是想要更清晰的代码历史记录,那么执行您要求的方法需要您在本地和远程项目上覆盖历史记录。

如果您还没有用您的更改创建新提交,您想要的是执行 git commit --amend 修改旧提交。

如果您已经创建了一个新的提交,您需要使用 git rebase -i 将您的提交压缩到旧的提交之上。

在本地进行此更改并验证您的提交看起来符合您的要求后,您将必须 git push --force 覆盖 Github 远程上的历史记录。

这是一个关于如何在 git 中重写历史的教程,它解释了 this answer 中列出的两种方法。

我不建议您这样做,因为 GIT 并不意味着删除 and/or 编辑提交。您可以恢复之前的提交,然后再次提交 "valid" 代码。

或者您可以 Rebase 您的分支机构。 或者看看这个 Answer.