3. 版本回退

版本回退

延续之前的文件,重新练习修改提交,修改 readme.txt 的文本内容如下:

Git is a distributed version control system.
Git is free software distributed under the GPL.

相比较上个版本的 readme.txt 的内容:

Git is a distributed version control system.
Git is free software

添加了新内容 distributed under the GPL

这时尝试提交:

commit 部分添加的说明内容为 append GPL

$ git add readme.txt
$ git commit -m "append GPL"
[master a58b4d1] append GPL
 1 file changed, 1 insertion(+), 1 deletion(-)

使用 Git 进行操作时,修改到一定程度可进行保存,在 Git 当中这个保存的方式就是 commit。一旦文件修改出现错误,或者误删文件,可以从最近的 commit 中恢复。

在 Git 中,可用 git log 命令,查看版本控制系统历史记录

$ git log
Author: lion <username@xxx.com>
Date:   Wed Oct 9 14:14:44 2019 +0800

    append GPL

commit f99120a42d3aa6c4f18b4bd7dbdfab80a011ce0c
Author: lion <username@xxx.com>
Date:   Wed Oct 9 14:02:04 2019 +0800

    add distributed

commit ddc374f50574afa159853eb950643b68d6a273dc
Author: lion <username@xxx.com>
Date:   Wed Oct 9 11:30:32 2019 +0800

    wrote a readme file

git log 命令显示从最近到最远的提交日志。
同时,git log 输出的信息比较多,这时可以加上 --pretty=oneline 参数,以缩减内容,只显示关键的信息。

$ git log --pretty=oneline
a58b4d17ac618b23f3ce3db177a773df1b08d93f append GPL
f99120a42d3aa6c4f18b4bd7dbdfab80a011ce0c add distributed
ddc374f50574afa159853eb950643b68d6a273dc wrote a readme file

Git 会将提交的每个版本串成一条时间线。

在 Git 中,用 HEAD 表示当前版本,HEAD^ 表示上个版本,依次类推。当版本多的时候,可以写成 HEAD~100,这里 100 代表的就是哪个版本。

现在,将当前版本 append GPL 回退到上一个版本 add distributed,就可以使用 git reset 命令

$ git reset --hard HEAD^
HEAD is now at f99120a add distributed

查看 readme.txt 的内容,的确是 add distributed

$ cat readme.txt
Git is a distributed version control system.
Git is free software.

此时用 git log 查看下当前版本库的状态

$ git log
commit f99120a42d3aa6c4f18b4bd7dbdfab80a011ce0c
Author: lion <username@xxx.com>
Date:   Wed Oct 9 14:02:04 2019 +0800

    add distributed

commit ddc374f50574afa159853eb950643b68d6a273dc
Author: lion <username@xxx.com>
Date:   Wed Oct 9 11:30:32 2019 +0800

    wrote a readme file

这里会发现 append GPL 这个版本无法查看。

Git 的版本回退速度非常快,因为 Git 内部有个指向当前版本的 HEAD 指针,当回退版本的时候,Git 仅仅是把 HEAD 从指向 append GPL 改为指向 add distributed

不过在 Git 中,提供了一个命令 git reflog 用来记录每一次命令,可以查看 append GPLcommit id,使用 git reset --hard commit_id 回到对应 commit_id 的版本。

小结

  • HEAD 指向的版本就是当前的版本,Git 允许在版本之间进行切换,使用命令 git reset --hard commit_id
  • 切换版本前,用 git log 查看提交历史,以确定回退到哪个版本。
  • 要重新回到回退前的版本,用 git reflog 查看命令历史,找到对应的 commit_id,用第一条提到的 git reset --hard commit_id 回到某个版本。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值