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

如何用 Git 将代码恢复到一个历史的版本,第1张

有些时候,在一些特殊情况下,我们需要将代码恢复到一个历史的提交版本上。而这个历史提交版本,离最新的提交已经比较久远了。

比如,我希望将如下的仓库的提交,恢复到上上上上次提交。当然,我可以一次一次的 revert,但是有没有更快更简单的办法呢?

暴力的方式

如果你的仓库是自己在用(不影响别人),那么你可以使用 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 命令,将当前代码切换回最新的提交。

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

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

虽然用到的时候很少,但是理解它的原理有助于大家理解 Git 的工作区,暂存区和版本库的各种指针 *** 作的意义,希望对大家有用。

其实要取得不同的branch的tag,只需要在相应的分支上打tag就行了。这样的tag就唯一对应了不同的分支。例如,你在master上打了tag为v1,在某个branch上打了tag为v2,则你取出v2代码的时候,自然就是对应的branch分支了。

$ git remote -v

eoecn >

找到要拉取代码的地方,看到clone后,选择复制地址(网址),不要选密钥ssh。

在要放拉取代码的文件夹空白处右击,选择GitBashHere,打开窗口,输入命令:`gitclone复制的网址报错。

`unabletogetlocalissuercertificate`;并且我 *** 作的电脑是公司内网才能进,不能访问外网。

在git输入命令:`gitconfig>

以上就是关于如何用 Git 将代码恢复到一个历史的版本全部的内容,包括:如何用 Git 将代码恢复到一个历史的版本、如何使用git获取指定tag的代码、如何获取远程仓库分支代码git等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9603214.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存