git回退到某个版本,以及从过去的版本返回到新的版本

主要内容:
1) HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
2)用git log可以查看提交历史,可以查询到我们要返回版本的ID。
3)版本回退之后,需要再次回到会退前,可以用git reflog查看命令历史,可以查看到每次命令的记录,里面会有我们需要的版本ID。

假设在工作中,你将辛辛苦苦写了一半的代码改乱了,想要回到这次修改之前,而不至于所有的劳动功亏一篑,这时候我们该怎么做呢

例如:我们已经有一个将 text 这个项目提交到Git 仓库了,并且已经有了多次的提交

第一次提交:add index.html (首页布局已完成)
第二次提交: add 1.txt
第三次提交: change 1.txt

这时候,修改 text1.txt 之后,我觉得之前的版本好像更合适一些,需要回退到之前的版本
我只需要用到 git reset 就可以做到的


情景一: 明确知道我们要回退到第几个版本
    打开相应的Git 命令行,在Git中,用HEAD表示当前版本,所以回退到上一个版本就只需要使用命令: ** git reset --hard HEAD^ **
    如果是上上一个版本的话,只需要使用命令: git reset --hard HEAD^^
要是需要回退到20个版本之前的话,就可以使用命令: git reset --hard HEAD~20


情景二:已经不记得是第几个版本了
有时候,提交的东西多了,或者是一段时间后,再来继续这个项目,可能早就不记得到底是第几个版本了,这时候,我们可以使用命令:git log 来查看每次的更改记录

$ git log
commit 580361e6bf5ce744c0ca4a2295e97bc42f5a6c36 (HEAD -> master)
Author: leyale mogu163@yeah.net
Date: Sat Dec 1 11:44:08 2018 +0800
chgange 1.txt

commit 5a73f7b0689653dafddf5a37c1b3dde5b19f144e
Author: leyale mogu163@yeah.net
Date: Sat Dec 1 11:43:28 2018 +0800
add 1.txt

commit 52602b0b04b57b33310fa256707518b126d2648c
Author: leyale mogu163@yeah.net
Date: Sat Dec 1 11:42:12 2018 +0800
add index.html

从上面我们可以看到相关的提交日志,一共是3次修改,在Data中我们可以看到每次提交的具体时间,Data后面是我们每次提交的时候,所填写的提交备注,这样就可以知道自己需要回退到哪个版本了,另外值得注意的是commit 后面的一串字符,这个是我们的提交ID,每个人的都是不一样的,在这个时候,我们回退就可以直接借助这个ID来回退了
ID回退命令: $ git reset --hard 52602b0b04b57b33310fa256707518b126d2648c
执行后返回:HEAD is now at 52602b0 add index.html

这时候,我们回到了第一次提交,也就是说,text 中就只有第一次提交的index.html这一个文件了


情景三:回退到某一个文件之后,又需要返回到最近更新的某个版本
原命令行窗口还未关闭: 直接往上查看一下要回到的那个版本的ID,然后执行命令:
$ git reset --hard 580361e6bf5ce744c0ca4a2295e97bc42f5a6c36

已经关闭:
可以借助命令: $ git reflog 来查看每一次命令的记录

查看到之后,我们再利用 git reset 来返回到相应的版本即可,HEAD前面的一串字符为我们简写的ID
命令:$ git reset --hard 580361e

 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要将Git回退到某个特定版本,可以使用以下命令: git reset --hard 目标版本号 其中,目标版本号是你要回退到的版本的唯一标识,可以是提交的SHA值或者分支名。比如,如果你想回退到提交号为9feb83df6db8b132004325ab03377b2088cba540的版本,可以使用以下命令: git reset --hard 9feb83df6db8b132004325ab03377b2088cba540 这个命令会将HEAD指向目标版本,同时丢弃掉目标版本之后的所有提交。请注意,这个操作是不可逆的,所以请确保你真的想回退到该版本。 另外,还有一种回退方法是使用git revert命令,它会生成一个的提交来撤销指定版本的更改,这样可以保留之后的提交。如果你只想撤销某个版本的更改而不丢弃之后的提交,可以使用git revert命令。具体操作步骤如下: 1. 使用git log命令或者git reflog命令查找目标版本的提交号。 2. 运行git revert -n 目标版本号命令来撤销目标版本的更改。这个命令会生成一个的提交,包含了撤销指定提交的更改,但是不会自动提交。 3. 如果在撤销过程中遇到冲突,需要手动解决冲突并使用git add命令将解决后的文件添加到暂存区。 4. 使用git commit -m 版本名命令提交撤销的更改。 5. 最后,使用git push命令将提交推送到远程仓库。 这样,你就成功将Git回退到某个特定版本了。请根据你的需求选择合适的回退方法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huayang183

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值