为什么git会重置commit+;git push会导致当前分支的尖端位于远程分支后面吗?

为什么git会重置commit+;git push会导致当前分支的尖端位于远程分支后面吗?,git,heroku,github,git-reset,Git,Heroku,Github,Git Reset,我想撤销回购协议上的一些小改动。我决定回去两次,并且做了 git reset --hard <commit> 一切都很顺利。但是当我推到heroku的时候,我得到了一个错误,关于一些裁判是如何不被推的,然后这个解释: 更新被拒绝,因为当前分支的尖端位于远程分支的后面。在再次按下之前,合并远程更改(例如“git pull”) 每次我回到前一次提交时,我都会有一个分离的头部或遥控器后面的提示。这阻止我推git或heroku。为什么?我该怎么做?要遵循的正确命令列表是什么,以便将来不会造

我想撤销回购协议上的一些小改动。我决定回去两次,并且做了

git reset --hard <commit>
一切都很顺利。但是当我推到heroku的时候,我得到了一个错误,关于一些裁判是如何不被推的,然后这个解释:

更新被拒绝,因为当前分支的尖端位于远程分支的后面。在再次按下之前,合并远程更改(例如“git pull”)


每次我回到前一次提交时,我都会有一个分离的头部或遥控器后面的提示。这阻止我推git或heroku。为什么?我该怎么做?要遵循的正确命令列表是什么,以便将来不会造成干扰?

我认为heroku不允许您重写历史记录。在远程分支上工作时,不应使用
reset
rebase
。利用

git revert HEAD~2..HEAD

将创建2个新的提交,以恢复上2个提交的更改。这也避免了同事之间的冲突。

在这一点上,这不会抹去我想要保留的工作吗?我成功地重置为并推送了提交,因此我假设您的建议将撤消我所做的一切。这将
按您的意愿还原您最近的2次提交,但这两次提交都将保留在历史中。因此,如果您以后决定需要这两个提交,您可以获得它们。如果使用
reset
2次提交将不再是修订树的一部分(不会保留在历史记录中)。
git revert HEAD~2..HEAD