Git 将代码恢复到一个历史的版本

Posted 阳光小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git 将代码恢复到一个历史的版本相关的知识,希望对你有一定的参考价值。

Git 将代码恢复到一个历史的版本

要把代码回到某个历史版本 比如 test有两种方法

暴力的方式

如果你的仓库是自己在用(不影响别人),那么你可以使用 git reset --hard <target_commit_id> 来恢复到指定的提交,再用 git push -f 来强制更新远程的分支指针。为了保证万一需要找回历史提交,我们可以先打一个 tag 来备份。

对于刚刚的例子,需要执行的命令就是:

// 备份当前的分支到 backup_commit
git tag backup_commit
git push origin backup_commit
// 重置 source 分支
git reset --hard 23801b2
// 强制 push 更新远程分支
git push origin source -f

温和的方式

如果你的仓库是多人在协作,那么你这么操作会使用别人本地的代码库混乱,所以只能建一个新的提交,这个新的提交中把想取消的提交都 revert 掉,那么具体应该如何做呢?方法如下:

首先,和刚刚一样,用 git reset --hard 23801b2 将代码切换到目标提交的 id。接下来,用 git reset --soft origin/source 命令(source 分支),将当前代码切换回最新的提交。

执行完上面两步后,你的仓库还是最新的提交,但是工作区变成了历史的提交内容,这个时候用 git add 和 git commit 即可。

该方法需要保证 reset 的时候没有别人做新的提交,如果有的话,会一并把别人的提交也撤销了。所以还是挺危险的,慎用。

以上是关于Git 将代码恢复到一个历史的版本的主要内容,如果未能解决你的问题,请参考以下文章

恢复git撤销commit的代码

zend studio 10 使用git 如何回到历史版本

git常用命令

个人作坊,vs 集成 GIT版本控制,GIT恢复历史版本时,总提示有冲突要求合并. 请问怎么才能还原到历史版本

如何在保持 git 历史向前发展的同时恢复提交

eclipse git历史记录被覆盖怎么恢复