git reset --hard to commit 不起作用 - 提示 HEAD 落后了

标签 git github version-control

我想将本地分支重置为提交 as288sa。 提交存储在远程存储库和我的本地存储库中。 我想使用 --hard 标志进行重置。

git reset --hard as288sa 

Checking out files HEAD is now at as288sa

然后我想添加提交重置推送提交到远程存储库。

git add -A
git commit -m "reseted hard"

On branch myBranch nothing to commit, working tree clean

git push origin myBranch

rejected error: failed to push some refs to git@... Updates were rejected because the tip of you current branch is behind its counterpart. Integrate the remote changes (e.g. git pull) before pushing changes

所以我做了一个git pull,然后git add -A和一个git commit以及一个git push 然后尝试了 git reset --hard as288sa。 我再次收到相同的错误消息。

发生了什么?

最佳答案

您不“添加并提交重置”;添加和提交是应用工作树更改来创建新提交的方式,而重置只是移动引用以指向现有提交。我希望 addcommit 命令提示没有添加/空提交,除非您的工作树中有不相关的更改。

好吧,无论如何,然后你尝试推送,但正如你所看到的,git 不喜欢它,因为你试图将引用推送到祖先,而 git 认为这不是一个好主意。它告诉您进行 pull ,但是当您这样做时,会将 myBranch 的本地引用移回原点之前放置的位置,从而撤消重置。

所以这就是发生的事情......但在我告诉你如何修复它之前,我应该提到你所做的事情会导致其他 pull myBranch 的人遇到问题,如果有很多用户,这可能是这不是您想要做的。

要执行您要求的操作,重置后但不执行 pull (甚至不用担心添加或提交),您可以使用 -f 标志执行推送。您可能有权也可能没有这样做,但即使您这样做,说实话,这也可能不是您想要做的。

相反,我怀疑您真正应该做的是恢复提交 - 即创建一个新的提交,该提交反转先前提交的更改,将树返回到与先前提交相同的状态,但处于保留已发布历史的方式。查看 git revert

的文档

关于git reset --hard to commit 不起作用 - 提示 HEAD 落后了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41351079/

相关文章:

git - 如何将 git 仓库同步到镜像仓库

eclipse - 无法在从 Git 导入的 Eclipse 中运行项目

git 从 LFS 迁移到普通仓库

Git - 相同的用户,不同的机器 - 克隆?

git - 将文件添加到 GitHub 存储库

git - 如何修复断点文件中存在冲突的 Git merge ?

git - Get-ChildItem 执行 git status

github - 源树无法推送

ios - Xcode 存储库指标含义

git - GitHub 的 TortoiseGit 问题跟踪器集成