【问题标题】:why do git reset commit + git push cause tip of current branch to go behind remote?为什么 git reset commit + git push 会导致当前分支的提示落后于远程?
【发布时间】:2014-03-26 00:41:42
【问题描述】:

我想撤消对我的存储库的一些小改动。我决定退回两次提交,并做到了

git reset --hard <commit>

git push -f

一切顺利。但是当我推送到heroku时,我得到了一个关于一些引用没有被推送的错误,然后是这样的解释:

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

每次我回到之前的提交时,我都会得到一个分离的 HEAD 或遥控器后面的提示。这可以防止我推送到 git 或 heroku。为什么?我该如何解决这个问题?什么是正确的命令列表,以便将来不会造成干扰?

【问题讨论】:

    标签: git heroku github git-reset


    【解决方案1】:

    我认为 heroku 不允许你 rewrite 历史。当你在远程分支上工作时,你不应该使用resetrebase。通过使用

    git revert HEAD~2..HEAD
    

    将创建 2 个新提交,以还原最近 2 个提交的更改。这也可以防止您的同事发生合并冲突。

    【讨论】:

    • 此时,这不会抹掉我想要保留的工作吗?我成功地重置并推送了提交,所以我假设你的建议只会撤销我所做的一切。
    • 这将 revert 你的最后 2 次提交如你所愿,但它们都将保留在历史记录中。因此,如果您稍后决定需要这 2 个提交,您可以获取它们。如果您使用reset,则 2 次提交将不再是修订树的一部分(不会保留在历史记录中)。
    猜你喜欢
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 2021-09-19
    • 2014-11-03
    • 2017-04-25
    • 2018-03-27
    相关资源
    最近更新 更多