Git学习笔记(二) —— 版本回退 、管理修改

本文介绍如何使用Git进行版本控制,包括查看工作区状态、检查修改内容、查看历史记录、版本回退、记录命令操作以及比较工作区与版本库区别等核心操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1git status 命令查看工作区状态

例如:当我们把readme.txt文件修改成如下内容的时候:

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

可以运行 git status 命令查看结果。


上面的命令告诉我们,文件被修改了,但是还没有准备提交的修改。

2git diff 命令查看具体修改的内容


可以从上面的命令看到,我们在第一行添加了一个“distributed ” 单词。

3 git log  命令查看历史记录(查看一共有几个版本提交到Git仓库了)


 git log 命令显示从最近到最远的提交日志。最近一次是 append GPL,最早一次是  wrote a readme file,如果嫌输出的信息太多,看得眼花缭乱,那么可以试试在 git log 后面加上参数 --pretty=oneline


备注:上图中 f1344ede5........ 这一串是用十六进制表示的 commit id (版本号)。

4 git reset 命令回退到上一个版本

现在,我们要把当前版本“append GPL”回退到上一个版本“add distributed”,就可以使用git reset命令:


在Git中用 HEAD 表示当前版本,上一个版本就是 HEAD^,上上一个版本就是 HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成 HEAD~100

看看readme.txt的内容是不是版本add distributed

果然,如下:

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

我们在用 git log 命令看看现在版本库的状态:


最新的那个版本append GPL已经看不到了!好比你从21世纪坐时光穿梭机来到了19世纪,想再回去已经回不去了,肿么办?办法其实还是有的,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个append GPLcommit idf1344ed...,于是就可以指定回到未来的某个版本:


版本号没必要写全,前几位就好了。

再小心翼翼地看看readme.txt的内容:

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

果然,又回来了。

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

5 git reflog  记录每一次命令

现在,你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?

在Git中,总是有后悔药可以吃的。当你用 git reset --hard HEAD^ 回退到 add distributed 版本时,再想恢复到append GPL,就必须找到 append GPLcommit id。Git提供了一个命令 git reflog 用来记录你的每一次命令:


终于舒了口气,第二行显示 append GPLcommit id f1344ed,现在,你又可以乘坐时光机回到未来了。

小结:

HEAD 指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令 git reset --hard commit_id 

穿梭前,用 git log 可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用 git reflog 查看命令历史,以便确定要回到未来的哪个版本。


6、git diff HEAD --file  查看工作区和版本库里面最新版本的区别。

给 readme.txt 加一行内容:

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes.

然后添加:


然后再修改readme.txt 文件:

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.

提交:


提交后,再看看状态:


可见,第二次的修改没有被提交。

Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。

提交后,用 git diff HEAD --  readme.txt 命令可以查看工作区和版本库里面最新版本的区别:


可见第二次修改确实没有被提交。

那怎么提交第二次修改呢?你可以继续 git addgit commit,也可以别着急提交第一次修改,先git add第二次修改,再git commit,就相当于把两次修改合并后一块提交了。


友情链接:

Git学习笔记(一)—— Git安装及版本库创建

Git学习笔记(三) —— 撤销修改、删除文件


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值