Git小结(工作区篇)

来源:互联网 发布:j2ee网盘系统源码 编辑:程序博客网 时间:2024/06/07 15:58

之所以单独拿出一个篇章来描述,是因为相关操作跟reset参数的可恢复性不同,可以直接对工作区进行操作,且无任何确认步骤。
涉及的git指令参数为checkout和rm。

(1)checkout

开发中,有时需要对某些文件恢复至修改前的样子,而不是整个恢复至上一版本。
例如。上一版本中,2.txt内容为“I love this game”;3.txt内容为“byte”。
之后,我们分别对两个文本进行更新。在2.txt中添加“me too”;3.txt中添加“boolean”。

这里写图片描述

但此时,突然发现2.txt修改错了,而3.txt是没有问题的。因此需要恢复2.txt,保持3.txt现有更新。因此我们输入 git checkout –2.txt。查看结果。

这里写图片描述

注:操作过程中,git并无任何提示,直接覆盖。

问题来了。恢复的是哪个版本呢?上一个版本的?还是暂存区的?

在2.txxt中添加“me too”,并添加至暂存区,之后再次添加“great”,重复checkout操作。

这里写图片描述

将当前版本覆盖为暂存区版本,而非上一版本。

问题又来了。如果我想讲多个问题恢复成修改前的样子呢。
可以使用git checkout – 2.txt 3.txt或者git checkout – . (其中“.”为当前目录)。

这里写图片描述

(2)rm

对于多文件更新提交,可以使用git add .来操作,将所有更新,添加,删除一次性的加到暂存区。但如果要对某些文件进行单独操作呢?例如,删除某一个文件。

首先,先添加一个新文本4.txt到工作区。内容为“new”。我们在尝试三种情况。

(a)在4.txt未加入暂存区前删除
(b)在4.txt已加入暂存区后删除
(c)在commit后,对4.txt进行删除

情况(a)(b)如下图

这里写图片描述

情况(c)如下图

这里写图片描述

对比后,可以发现,若文件未加入暂存区或版本库,rm不识别。

注:-r代表递归删除(对目录有效),-f为强制删除。