Git返回到特定的提交


Git go back to a specific commit

本问题已经有最佳答案,请猛点这里访问。

我现在执行这个命令:

1
git reset --hard shaCommit .

我将把我的代码恢复到以前的特定提交,但是,我如何推动它呢?假设我最后的4次提交都是垃圾,我想返回到一个特定的提交,但是当我尝试推送时,我得到了这个错误:

1
2
3
4
5
6
7
8
$ git push
To ssh://[email protected]/warlocks/capexbaar-web.git
 ! [rejected]        development -> development (non-fast-forward)
error: failed to push some refs to 'ssh://[email protected]/warlocks/capexbaar-web.git'
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.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.


建议你在这里检查这个答案类似的问题

从最初接受的解决方案中引用

只做:

1
git push origin <your_branch_name> --force

或者,如果您有特定的回购:

1
git push https://git.... --force

您必须使用命令git push -f强制推送。

如果在强制执行推送之前提取更改,它将下载所有更改并执行合并提交。


如果您与回购协议中的其他人合作,并且已经推动了您想要删除的承诺,那么通常最好不要修改历史记录,这样您就不会把其他人正在做的事情搞砸。

为此,您可以强制执行新的提交以将更改恢复到该状态,而不只是删除旧的提交:

1
2
git checkout shaCommit -- .
git commit -a

有关详细信息,请参阅还原多个Git提交