无需强制推送即可在远程分支上恢复提交

bpo*_*iss 5 git version-control continuous-integration continuous-deployment

如何在不强制推送和丢失历史记录的情况下将某些远程存储库还原为旧提交?我知道我能做到

git reset --hard <commit-hash>
git push -f origin master
Run Code Online (Sandbox Code Playgroud)

但我没有权力强制推动,我也不想失去历史.

我想这样做是因为我将一些****推入了我的主分支,并且自动部署从这个分支部署到生产环境.我通过创建一个新的分支并更改了部署设置来使用它来解决这个问题,但有没有选项可以将远程存储库的当前状态设置为旧的提交,以防万一发生这种情况?

小智 11

您可以使用git revert <commit>…所有n次提交,然后照常推送,保持历史不变.

https://git-scm.com/docs/git-revert

  • @bpoiss,无需强制的解决方案是使用`git revert`,它添加了一个新的提交。任何您_删除_提交的解决方案,例如通过`git reset --hard` 或类似方式,都需要强制推送。 (2认同)

Cod*_*ard 5

正如在上面的评论中添加的那样。

查看此内容以获取完整详细信息:

如何将 HEAD 移回以前的位置?(分离的头)


还有git revert上面的帖子中没有描述的。

git revert <commit>

git revert 只是撤消所需的提交,并通过添加新的“还原”提交来撤消对此存储库所做的更改。

在此处输入图片说明