暂时恢复到git提交并推送到服务器



我有一个项目想要恢复到大约12次提交之前。我想恢复,推送到服务器,并在生产服务器上进行测试。如果一切顺利(bug消失了),那么我想保留这个版本,并转储导致bug的接下来12次提交。如果这个恢复过程没有修复错误,那么我想回到当前的头上。

我应该做什么类型的git还原?

您可以将git revert与一系列提交一起使用,Git将为每个恢复生成一个新的反向提交(因此总共有12个提交)。

接下来,(可选)可以使用git rebase -i将所有提交压缩为一个提交。

最后,您将一个提交(或者,如果您跳过了挤压,则将全部12个提交)推送到服务器。

我会通过创建一个新的测试分支来解决这个问题,然后核处理12个有问题的提交:

# from current feature branch
git checkout -b feature_test
# nuke 12 commits
git reset --hard HEAD~12

您可以将此分支推送到服务器并进行测试。如果您不喜欢所看到的内容,可以简单地删除feature_test分支。如果您确实想恢复12个提交,那么您也可以使用git reset从实际的特性分支中删除12个提交。

如果不能重写远程特性分支的历史记录,那么可以使用git revert恢复12次提交。在这种情况下,Git将在特性分支的顶部创建12个提交,这将撤消您想要删除的12个提交。

我要做的是

  • 备份当前状态:git checkout -b current_master_bu
  • 返回主机:git checkout master
  • 然后重置为您想要的提交:git reset --hard <old_commit_hash>

如果这有效,那就太好了!将更改推送到主机:git push -f(小心重写历史等)

如果您需要返回到已保存的主分支,只需合并备份分支:git merge current_master_bu

最新更新