【Java】Java核心 81:Git 教程(4)差异比较 & 版本回退

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 在Git中,可以使用差异比较命令和版本回退命令来查看文件之间的差异并回退到早期的版本。以下是对这些操作的简要解释:

在Git中,可以使用差异比较命令和版本回退命令来查看文件之间的差异并回退到早期的版本。

以下是对这些操作的简要解释:

差异比较:你可以使用git diff命令来比较工作区中的文件与暂存区或已提交版本之间的差异。执行以下命令可以查看文件的差异:

git diff

这将显示工作区与暂存区之间的差异。如果要比较工作区与最新提交版本之间的差异,可以添加参数:

git diff HEAD

此命令将显示工作区与HEAD(最新提交)之间的差异。


版本回退:当你需要回退到早期的版本时,可以使用git checkout或git reset命令来实现。


使用git checkout命令可以将指定版本的文件内容还原到工作区。执行以下命令:

git checkout <commit号> <文件名>

<commit号>是要回退到的具体提交的标识符,可以通过git log命令查看。<文件名>是要回退的文件名。

使用git reset命令可以撤销某次提交及之后的所有提交,并将代码库恢复到指定版本。执行以下命令:

git reset <commit号>

<commit号>是要回退到的具体提交的标识符。

注意:使用git reset命令回退版本将会删除撤销的提交及其后的提交记录,且无法恢复。建议在本地开发环境中使用该命令,避免对公共代码库产生不可逆的影响。

补充说明:在进行版本回退操作前,建议先创建一个分支并切换到该分支上,以保留当前版本的稳定状态。可以使用以下命令创建和切换分支:

git branch <分支名>
git checkout <分支名>

这样你就可以在新的分支上进行版本回退操作,而不会影响主分支或其他工作进展。


06.GIT本地操作-差异比较

目标
使用 git diff来比较暂存区、本地库与工作区的内容
内容

使用vim命令,对readme.txt文件进行编辑,添加我是第二行代码,使用wq退出


5ce881a8ace94de9b17a4d98722c847d.png

5113ef17389c4837919d40d852afceda.png

工作区暂存区比较

命令:git diff readme.txt

c5d2d17c42144080a1bcc5d1d73f3800.png

工作区本地库比较

命令:git diff HEAD readme.txt

8da7a758acb14daf97fad7561379a86e.png

暂存区本地库比较

命令:git diff --cached readme.txt

127f898ef9ef4722b9d4e79d2d830937.png

这里缓存区和本地库没有不同所以没有内容

  • 补充:可以第二次提交到暂存区和本地仓库
小结
  • 工作区与暂存区如何比较
    git diff 文件名
  • 工作区与本地库如何比较
    git diff head 文件名
  • 暂存区与本地库如何比较
    git diff --cached 文件名

07.GIT本地操作-版本回退

目标
掌握 git log、git reflog、git reset 作用
内容

当我们从暂存区提交到本地仓库时,发现当前的提交的版本有问题,希望回退到指定版本如何操作呢?

c2380d3b13554063b792cd6bd13a9a4a.png

使用vim命令编辑readme.txt,添加“我是第三行代码”

c852a56dcd0a48baaa937c589bdd8496.png

命令:git add readme.txt 提交到暂存区

我们可以通过git提供的查看日志命令来查看提交的日志

命令:git log  查看当前提交日志

cd27fd8dcce241b2a7b5c83d3a0e877a.png

可以发现,目前为止,我们已经在本地仓库中提交了3次,也就是说有3个不同版本。其中,最近的这个版本有一个标示:HEAD-> master 这就是标记当前分支的当前版本所在位置,如果没有显示当前所在位置可以使用下面命令查看:

命令:git log --decorate  查看当前提交日志,且显示当前分支的当前版本所在位置

在log中,每一个版本的前面,都有一长串随即数字: b44a10787c2b2bcc7ceb9c39cf06309065518d4b ,这是每次提交的commit id ,这是通过SHA1算法得到的值,Git通过这个唯一的id来区分每次提交

回退到之前版本

命令:git reset --hard HEAD^
回归到上一个版本,Git通过HEAD来判断当前所在的版本位置。那么上一个版本,就用HEAD^标示,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。 


07bde75c70da4625842125007c3e6320.png

这时我们可以在查看一下日志 git log

5af9f269cd624cbeb5fe0ff105c20f01.png

发现只有两个版本,我们在查看一下文件内容

bec6fb0d7eab43c0a5bb9fba1a5fe338.png

回退到指定版本

首先们使用

命令: git reflog 查看所有操作

cd9f65af5e554284bf3eb7aeeb0ce7ea.png

找到之后可以使用如下命令进行回退到指定版本

命令:git reset --hard 版本号 回退到指定版本

image.png

我们回到第三次提交,这时我们在查看文件

ecaeb0cb54d34ef3bdd8cdffe9ef0080.png

小结
  • 如何查看当前日志
    git log 只能看到当前操作
  • 如何查看所有操作日志
    git reflog 查看所有操作日志
  • 如何回退到上一个版本
    git reset --hard head^
  • 如何回退到指定版本
    git reset --hard 版本号

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
11天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
72 26
|
17天前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
17天前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
24天前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
27 2
|
17天前
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
34 0
|
1月前
|
存储 开发工具 git
git工具使用教程全讲解
本文介绍了版本控制的概念及其重要性,详细对比了多种版本控制工具,如VSS、CVS、SVN和Git,重点讲解了Git的基本使用方法、工作原理及与SVN的区别。此外,文章还介绍了GitHub、GitLab和Gitee等流行的代码托管平台,以及如何在这些平台上注册账号、创建和管理仓库。最后,文章还提供了如何在IntelliJ IDEA中配置和使用Git的具体步骤。
51 1
|
1月前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
1月前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
1月前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
|
29天前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
12 0
下一篇
DataWorks