我想将本地分支重置为提交$http
。
提交存储在远程存储库和我的本地存储库中。
我想使用as288sa
标志重置。
--hard
检出文件 HEAD现在在as288sa
然后,我希望git reset --hard as288sa
和add
提交到远程存储库的commit
和reset
。
push
在分支myBranch上 无需承诺,工作树干净
git add -A
git commit -m "reseted hard"
拒绝 错误:无法将某些引用推送到git @ ... 更新被拒绝,因为您当前分支的提示落后 它的对应物。在推送更改之前集成远程更改(例如git pull)
所以我做了git push origin myBranch
,然后是git pull
和git add -A
以及git commit
,然后尝试了git push
。
我再次收到相同的错误消息。
发生了什么事?
答案 0 :(得分:4)
您没有“添加并提交重置”;添加和提交是如何应用工作树更改来创建新提交,而reset只是将ref移动到指向现有提交。我希望add
和commit
命令可以抱怨没有添加/清空提交,除非你的工作树中有无关的更改。
嗯,无论如何,那么你试着推动,但是你看到git不喜欢它,因为你试图将一个ref推到一个祖先,git不认为这是个好主意。它告诉你做一个拉动,但当你这样做时,通过将myBranch的本地参考文件移回原点所放置的位置来撤消重置。
这就是发生了什么......但在我告诉你如何修复它之前,我应该提一下你正在做的事情会导致其他人拉扯myBranch出现问题,如果有很多用户这可能不是你想做的。
要执行您所要求的,在重置后但不进行拉动(甚至不用担心添加或提交),您可以使用-f标志进行推送。你可能有也可能没有这样做的许可,但即使你认真对待,也可能不是你想做的事。
相反,我怀疑你真的应该做什么是恢复提交 - 即创建一个新的提交,它反转先前提交的更改,将树返回到与先前提交相同的状态但是在保留已发布历史的方式。查看git revert