我有一个项目想要恢复到大约12个提交之前。我想恢复,推送到服务器并在生产服务器上测试它。如果一切顺利(错误消失),那么我想保留这个版本并转储导致该错误的下一个12次提交。如果这个恢复过程没有修复bug,那么我想回到目前的头部。
我应该做什么样的git revert?
答案 0 :(得分:3)
您可以使用git revert
进行一系列提交,Git将为每个恢复生成一个新的反向提交(总共12个提交)。
接下来,(可选)您可以使用git rebase -i
将所有提交压缩为一次提交。
最后,你将一次提交(或者,如果你跳过壁球,全部12次提交)推送到你的服务器。
答案 1 :(得分:2)
我会通过创建一个新的测试分支来解决这个问题,然后查看有问题的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个提交。
答案 2 :(得分:0)
我会做的是
git checkout -b current_master_bu
git checkout master
git reset --hard <old_commit_hash>
如果这样有效,太好了!将更改推送到master:git push -f
(小心重写历史记录等)
如果您需要返回已保存的主人,只需合并备份分支:
git merge current_master_bu