900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Git - 版本穿梭(时光穿梭机)

Git - 版本穿梭(时光穿梭机)

时间:2020-10-03 10:08:14

相关推荐

Git - 版本穿梭(时光穿梭机)

前言

当你玩游戏时,每玩一段时间都会存一下档以免前面的进度丢失,在打厉害 BOOS 前,你也会选择存档,以免打不过而丢失进度,这个存档被称为 “快照”。

Git 允许你commit后的仓库自由前进后退版本,当你从 0 到 1 完成一个项目时,其中难免会出现修改多次,还有可能会出现文件误删丢失等问题,只要你正确的存档,那么 Git 就能让你有后悔药吃,不至于以前的代码全部白写。

查看历史

如果你想进行版本回退或前进,首先你需要知道如何查看历史,键入git log命令可列出:

$ git log

我一共commit提交了两次版本,如下:

commit d5cbf24b3712f1524555b9b71f2937e7d62bbfc8Author: 王佳斌 <wangjiabinweb@>Date: Tue Jan 28 17:12:45 +0800This is a demo!commit f39fca8aebabdc353ac82d21feb9758e6953ffcdAuthor: 王佳斌 <wangjiabinweb@>Date: Tue Jan 28 12:31:33 +0800This is a test.

第一行commit后面一串代码是 哈希值(Hash Function) ,它是每个版本的唯一索引。

第二行Author是提交的用户名及邮箱。

第三行Date是提交的时间及日期。

This is a demo!commit提交时的版本介绍信息。

当然,你也可以使用git log --pretty=oneline以更简洁的排版来打印历史:

$ git log --pretty=oneline

结果如下:

d5cbf24b3712f1524555b9b71f2937e7d62bbfc8 This is a demo!f39fca8aebabdc353ac82d21feb9758e6953ffcd This is a test.

可以看到,省去了作者及时间,只留下了哈希值与版本介绍。

有时候为了视觉安全起见,可使用git log --oneline显示不完整的哈希值来打印历史:

$ git log --oneline

结果如下:

d5cbf24 This is a demo!f39fca8 This is a test.

可以看到,显示了不完整的哈希值。

准备工作

在正题之前,我们还需要做一些准备工作,模拟几个提交版本

注意:如果你本地有提交历史,那么你可以不做下面的准备工作。

一、工作区新建一个project.txt,该文件中写入one字符,添加暂缓区后提交:

$ touch project.txt$ vim project.txt$ git add project.txt$ git commit -m "one"

二、修改project.txt,该文件中删除one字符并写入two字符,添加暂缓区后提交:

$ vim project.txt$ git add project.txt$ git commit -m "two"

三、修改project.txt,该文件中删除two字符并写入three字符,添加暂缓区后提交:

$ vim project.txt$ git add project.txt$ git commit -m "three"

我们总结一下,我们的项目文件project.txt已经有了 3 个版本,每个版本都已经标识。

版本回退

目前,我们处在three第 3 个版本。假设我已经后悔了,现在要回到最初的one第 1 个版本。用一句简单明了的话阐述版本穿梭。根据版本索引值,移动 HEAD 指针来达到版本穿梭。

一、打印历史日志:

$ git log --pretty=oneline

我们 3 次提交的历史,都被 Git 管理并列出,:

878aab479d97cd8c2bbb4366dc2c5d65c3c639d7 three2c3da06a3e3bc8f8ed2768398188d24c3efe848d two94de44d2e1a9f7d6a9a9f237d553c29983be1f67 one

二、恢复one版本前,我们先看一下当前文件中有什么:

$ cat project.txt

结果:

three

假想一下,如果版本回退到了one,那么内容是不是变成了one呢?

三、根据哈希值索引,移动 HEAD 指针回退:

$ git reset --hard 94de44d2e1a9f7d6a9a9f237d553c29983be1f67

Git 提示,指针(HEAD) 现在在 one,也就是成功了:

HEAD is now at 94de44d one

四、测试,查看当前project.txt文件中有什么:

$ cat project.txt# one

这样,我们就完成了一次版本的回退,你可以自由在各版本中随意穿梭。

写在后面

版本穿梭命令还有其他常用参数,如果你想了解更多版本穿梭知识请访问 Git - 版本穿梭 reset 命令常用三个参数及实际应用场景(–hard / --soft / --mixed)

本文只介绍了如何进行版本穿梭,并未涉及 Git 版本穿梭的核心概念,如果你想了解 Git 版本穿梭的核心概念HEAD指针的话,请移步 HEAD 是什么?。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。