我想将本地分支重置为提交 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
。
我再次收到相同的错误消息。
发生了什么?
最佳答案
您不“添加并提交重置”;添加和提交是应用工作树更改来创建新提交的方式,而重置只是移动引用以指向现有提交。我希望 add
和 commit
命令提示没有添加/空提交,除非您的工作树中有不相关的更改。
好吧,无论如何,然后你尝试推送,但正如你所看到的,git 不喜欢它,因为你试图将引用推送到祖先,而 git 认为这不是一个好主意。它告诉您进行 pull ,但是当您这样做时,会将 myBranch 的本地引用移回原点之前放置的位置,从而撤消重置。
所以这就是发生的事情......但在我告诉你如何修复它之前,我应该提到你所做的事情会导致其他 pull myBranch 的人遇到问题,如果有很多用户,这可能是这不是您想要做的。
要执行您要求的操作,重置后但不执行 pull (甚至不用担心添加或提交),您可以使用 -f 标志执行推送。您可能有权也可能没有这样做,但即使您这样做,说实话,这也可能不是您想要做的。
相反,我怀疑您真正应该做的是恢复提交 - 即创建一个新的提交,该提交反转先前提交的更改,将树返回到与先前提交相同的状态,但处于保留已发布历史的方式。查看 git revert
关于git reset --hard to commit 不起作用 - 提示 HEAD 落后了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41351079/