27
2017
09

Git-3、仓库内的文件操作

一、修改文件

1、现在我们在之前提交的readme.txt文件上,做一些修改。修改如下:

这里写图片描述

2、现在运行git status 命令看看结果:

$ git status

这里写图片描述

●git status命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。

●git diff命令可以帮助我们查看具体修改了什么内容:
这里写图片描述

3、知道对readme.txt作了什么修改后,接下来再把它提交到仓库。和提交文件的步骤一样:

$ git add readme.txt
$ git commit -m "add line"

这里写图片描述

现在我们用git status 再来看一下仓库的当前状态:
这里写图片描述
●可以看到,Git告诉我们没有需要提交的东西,工作目录是干净 。

工作区与缓存区

工作区就是电脑里能看到的目录,工作区中有一个隐藏目录.git,这个不算工作区,而算Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

二、版本回退和恢复

我们修改完文件后,发现自己还是希望保存修改前的文件,这时候就需要用到版本回退了。

1、我们使用git log命令回顾一下对于readme.txt,我们做了什么修改

$ git log

这里写图片描述

●git log命令显示从最近到最远的提交日志。如上图,我们可以看到两次提交。如果嫌输出日志太多,还可以加上–pretty=oneline参数,如下:

$ git log --pretty=oneline

这里写图片描述

●前面的一大串字符串指的是commit id(版本号)。

2、使用git reset命令回退到上一个版本

在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,如果回退的版本比较早,比如往上回退100个版本,可以写成HEAD~100。

使用git reset命令回退一个版本

$ git reset --hard HEAD^

这里写图片描述

上述命令让我们回退了一个版本,现在我们打卡readme.txt查看一下:
这里写图片描述
●可以看到,我们确实回退到了上一个版本。


版本回退到了上一个版本,这时,你又后悔了,你还是想要修改后的版本,这时候就要回复你回退之前的版本。

1、Git提供了一个命令git reflog用来记录你的每一次命令:

这里写图片描述

● 第二行显示add line的commit id是404c207

2、使用git reset命令恢复到某个版本

这里写图片描述

● 可以看到,我们又恢复到了版本回退前的版本。

三、撤销修改

Git会告诉你,git checkout – file可以丢弃工作区的修改:

$ git checkout -- readme.txt

命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

●一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

●一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

●总之,就是让这个文件回到最近一次git commit或git add时的状态。

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

上一篇:android代码执行adb shell终端命令(linux命令)并返回执行结果 下一篇:Git使用—fatal:remote origin already exists.