Git学习笔记(五)---修改管理

来源:互联网 发布:淘宝卖家怎样优化标题 编辑:程序博客网 时间:2024/04/28 13:33

git的设计思想并不是管理文件,而是管理修改,什么是修改呢?新增一行,删除一行,更改某些字符,删了一些又增加一些,甚至创建一个文件都是修改。

下面有一个小实验来说明这个问题:
1.对read.txt增加一行,然后添加到暂存区:
这里写图片描述
发现有一个待提交的文件。

现在再次修改read.txt文件,修改什么你随意吧。

2.现在直接执行提交:
这里写图片描述

现在再查看一下状态:
这里写图片描述

你会发现还是有未提交的,说明第二次修改并没有被提交,这是为什么?

这是因为你第一次操作把文件放到了暂存区,而第二操作你并没有执行git add命令添加到暂存区,git commit只会是把暂存区的修改给提交了,第二次没有放入暂存区的修改并不会被提交。

如果你想提交第二次修改,你可以再执行一次git add,把暂存区的两个文件合并后再执行git commit,这样第二次修改就会被提交。

总之,每次修改如果不git add到暂存区,执行git commit是不会提交本次修改的。

那么怎么插销修改呢?

1.如果现在你编辑完文件发现有不对的地方,想要插销本次修改,那么,可以用git checkout -- file可以丢弃工作区的修改:

这里写图片描述

可以看到,上面是我看了一下修改了什么地方,git提示我新加了一行,中间我用了撤销指令,然后再看文件,发现我上面添加的那一行没有了。

说明一下:

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

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

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

git checkout -- file命令中的–很重要,没有--,就变成了“创建一个新分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。

现在你如果已经添加到了暂存区,发现不太对,想要撤回暂存区的内容,该怎么做呢?

用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:

这里写图片描述

我添加了文件,然后又撤回了,现在再看一下状态:

这里写图片描述

比较上面两张图不同的状态,你会发现我们把放到暂存区的文件又插销回来了,重新放回了工作区。

如果你已经提交到了版本库,那就只能用前面的所讲的版本回退功能了,自己去前面找吧。

如果我们错删了文件read.txt,那么怎么找回呢?

下面来举个例子:
1.如果我删除了工作区的read.txt文件:

这里写图片描述

如果你是误删的,怎么恢复?先来看一下状态:

这里写图片描述

因为我们的版本库还没有删除,git发现工作区与版本库不一致了,所以会提醒你read.txt已经删除,现在如果你想恢复的话,执行指令git checkout -- read.txt:

这里写图片描述

你会发现这个文件又回来了。

但如果你就是想删除这个文件,并且在版本库中你也想删除它,那就用命令git rm删掉,并且git commit提交一下修改:

这里写图片描述

其实删除也是修改,好好消化一下修改的指令

0 0