Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除git中的最后一次提交后无法推送到github_Git_Github - Fatal编程技术网

删除git中的最后一次提交后无法推送到github

删除git中的最后一次提交后无法推送到github,git,github,Git,Github,我是Git新手,我已经删除了通过以下命令推送到github的最后两次提交: $ git reset --hard HEAD~2 现在,当我想将新提交推送到我自己的分支(jsonadd)到github时,我面临以下问题: $git push -u origin jsonadd hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Inte

我是Git新手,我已经删除了通过以下命令推送到github的最后两次提交:

$ git reset --hard HEAD~2
现在,当我想将新提交推送到我自己的分支(jsonadd)到github时,我面临以下问题:

$git push -u origin jsonadd
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.

如果您能让我知道如何修复它,我将不胜感激。谢谢各位

硬重置后,工作流中正确的下一步应该是强制将分支推送到GitHub:

git push --force origin jsonadd
强制推送是必需的,因为您通过重置此分支重写了其历史记录。如果没有强制推送,GitHub将无法应用您在本地进行的任何后续提交,这将无法将提交与仍然存在于远程服务器上的原始历史关联起来

我提到了您应该采取的“正确”的下一步,但是,大多数时候,重写已经发布的Git分支的历史是不可取的。这是不可取的,因为这样做可能会给共享分支的任何其他人带来问题。这样的用户会遇到与您现在面临的相同的错误,这会促使您在此处发布问题。更好的策略是恢复最近的两项承诺:

git revert HEAD~2..
此选项将应用两个新的提交,这将在功能上撤消最近两个提交所做的任何操作。如果只需要一次合并提交,请使用:

git revert --no-commit HEAD~2..

请注意,
git revert
方法对于您的分支可能被其他用户共享是安全的。如果他们取消了您的恢复工作,那么除了删除恢复所需的某些功能之外,不会发生任何意外情况。

那么您想删除从本地回购中删除的这两个提交,以及从github回购中删除吗?然后推动一些新的承诺?如果这个问题可以解决,我需要说是的。如何从github中删除这些已删除的本地提交。好吧,我可以给出一个不同的解决方案。。。你想要什么解决方案?如果您想在github中保留提交,我也可以通过这种方式解决。你想说什么就说什么,这能回答你的问题吗?