为啥我不能在 github 中推送还原的提交?

Posted

技术标签:

【中文标题】为啥我不能在 github 中推送还原的提交?【英文标题】:why cant I push reverted commit in github?为什么我不能在 github 中推送还原的提交? 【发布时间】:2021-08-17 11:01:23 【问题描述】:

我是 git 的新手。我正在做一个项目,但我使用了破坏我项目的新提交。

所以我使用 git log 和 git check out 回到上次提交。这在我的计算机上是成功的,但是当我尝试将它推送到 github 存储库时,我看到了这个错误:

error: failed to push some refs to 'https://github.com/bamdadghoori/courses.git'

hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

bamdad@DESKTOP-MJ4O8KO MINGW64 /e/courses (master)

这些是我尝试过的一些方法

1-重新初始化并使用新的提交

2-使用 git revert

【问题讨论】:

【参考方案1】:

如果这真的是您想要做的,git push --force 应该可以解决问题。请注意,如果您滥用它,它可能会删除您的旧作品。

就像您建议的那样,git revert 可能是更好的选择,因为它不会删除或覆盖任何历史记录。 假设您的分支git log 如下所示:

commit 95c374fca46bee52b9fd18e090e6afdfbe73813d (HEAD -> main, origin/main)
Author: Git User <git.user@mail.com>
Date:   Fri Mar 19 17:02:49 2021 +0100

    Latest commit message

commit 1177cab6490264e922075f28804404f4e1c08f76 (origin/main, main)
Author: Git User <git.user@mail.com>
Date:   Wed Mar 17 12:35:33 2021 +0100

    Commit message of the one you would like to keep

如果你想恢复最新的提交,你可以做git revert HEAD(HEAD 总是指你分支的最后一次提交)或者恢复任何提交,你可以复制粘贴提交哈希。在这种情况下git revert 95c374fca46bee52b9fd18e090e6afdfbe73813d. 然后通过键入ZZ(注意大写)或:wp 接受可能在vim 中打开的建议提交消息,然后按Enter。

【讨论】:

tnx。但我尝试过这种方式(git revert)。它在我的本地机器上很有用。但我无法在github中推送它,我也担心使用--force或--f推动。因为它会导致一些问题(例如就像你说的擦除工作或历史) 事先尝试git pulling,您可能仍然会错过您尝试恢复的一次提交 tnx @Wischm0pp 它现在可以工作了。当我尝试推送时,git bash 中没有错误,我可以在提交部分看到最​​后一次提交(我恢复了)。但如果我可以更好当我打开存储库(默认)而不是错误提交时看到这个版本。

以上是关于为啥我不能在 github 中推送还原的提交?的主要内容,如果未能解决你的问题,请参考以下文章

根据备份文件和 oplog恢复数据到某个时间点,为啥报不能恢复

可以克隆我的 Git 存储库但不能提交和推送

如何还原部分提交? [复制]

为啥我的推送中突然有合并提交?

如何将多个 Git 提交(已推送)还原到已发布的存储库?

为啥我在 Android Studio 3.3.1 的 Github 中使用 Revert 时无法回滚到某个点?