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

时间:2016-12-27 19:29:45

标签: git github version-control

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

--hard
  

检出文件   HEAD现在在as288sa

然后,我希望git reset --hard as288sa add提交到远程存储库的commitreset

push
  

在分支myBranch上   无需承诺,工作树干净

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

拒绝   错误:无法将某些引用推送到git @ ...   更新被拒绝,因为您当前分支的提示落后   它的对应物。在推送更改之前集成远程更改(例如git pull)

所以我做了git push origin myBranch ,然后是git pullgit add -A以及git commit,然后尝试了git push。 我再次收到相同的错误消息。

发生了什么事?

1 个答案:

答案 0 :(得分:4)

您没有“添加并提交重置”;添加和提交是如何应用工作树更改来创建新提交,而reset只是将ref移动到指向现有提交。我希望addcommit命令可以抱怨没有添加/清空提交,除非你的工作树中有无关的更改。

嗯,无论如何,那么你试着推动,但是你看到git不喜欢它,因为你试图将一个ref推到一个祖先,git不认为这是个好主意。它告诉你做一个拉动,但当你这样做时,通过将myBranch的本地参考文件移回原点所放置的位置来撤消重置。

这就是发生了什么......但在我告诉你如何修复它之前,我应该提一下你正在做的事情会导致其他人拉扯myBranch出现问题,如果有很多用户这可能不是你想做的。

要执行您所要求的,在重置后但不进行拉动(甚至不用担心添加或提交),您可以使用-f标志进行推送。你可能有也可能没有这样做的许可,但即使你认真对待,也可能不是你想做的事。

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

的文档