我有一个项目想要恢复到大约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