所以我在一个有一堆提交的分支上。在某个时间点,我决定最近的提交是坏的,我想回到倒数第二次提交。我使用git reset --hard xxxxxxxxxx
执行此操作,其中xxxxxxxxxx是提交代码的前十位数字。这似乎适用于将本地应用程序恢复到倒数第二次提交的条件。
但是,当我尝试add
,commit
和push
更改时,我收到错误,我的本地分支的提示位于其远程对应的后面。怎么办?
答案 0 :(得分:1)
通常,Git只允许您将 new 提交更改为远程存储库,即提交仅添加到遥控器已有的内容。这主要是为了确保使用存储库的每个人都保持一致状态,并且他们的存储库不会中断。
如果您故意想要从遥控器中删除提交,您可以使用git push --force
覆盖遥控器的内容并强制它接受您提供的任何内容。这是您要从远程实际删除提交的操作。再次注意,这实际上打破了其他所有参与者的本地存储库(就像重新定位一样),所以不要这样做,除非你是唯一一个使用它的人,或者你真的同意所有人。
撤消更改的更实用方法是执行 revert 。这是一个额外的提交,它撤消了以前完成的工作。因此,不是从历史记录中删除提交,而是添加另一个撤消提交的提交。您可以使用git revert commit-you-want-to-revert
。
答案 1 :(得分:0)
由于1或2个原因,您的本地分支机构支持其远程对应部门:
您的分支机构已共享,有人将您需要提取的其他更改推送到您必须同步的本地分支机构,然后git才能推送您的更改,或者
您将最近的提交推送到远程,因此git不会让您推送非快进更改,因为这会覆盖该提交。在这种情况下,覆盖提交可能就是你想要的,因为你把它扔掉了,所以你可以在这种情况下强行推送。