Git教程---修改、版本退回,删除

git修改,版本退回,删除

 

 

上述我们已经成功的提交了文件,接下来开始进行文件的修改,例如我们把文件修改成这样:

Hello my world!

We are family!

修改完成之后我们输入命令git status:

  

运行之后,结果为:

git status:此命令可以让我们时刻掌握着仓库当前的状态,如上命令已经告诉我们文件已经修改,但未提交

虽然readme.txt已经被修改,但是想要看看修改了什么内容怎么办呢?这时需要输入git diff命令:

之后运行结果如下:

git diff:此命令实际上就是用于查看你修改的内容(difference),可以看到我们在上面添加了一个my

修改完之后我们就可以用git add 命令提交到仓库(提交修改和提交新文件一样):

输入完命令运行之后同样没有任何输出,接着我们输入命令git commit(提交)

运行该命令之后显示为:

最后我们再用git status命令看一下仓库当前的状态,显示没有文件要提交:

 

-------------------------------------------------------------------------------------------------------------------------

 

现在我们学会了git修改,我们试着再一次对文件进行修改:

Hello my world!

We are family and we are happy!

然后尝试进行提交:

类似上述可以进行不断的修改,之后进行提交(当文件修改到一定程度的时候,可以“保存一个快照”,称为commit,一旦文件混乱或者误删,可以从最近的一个commit找回)

经过上述,我们可以知道共有三个版本的文件被提交到仓库里面:

版本1:wrote a readme file

版本2:add my

版本3:add warm

所以我们要怎么样才能查看我们的修改记录呢,在Git中,用git log命令查看:

运行该命令如下:

 

上面我们可以看到一些比较杂乱的信息,为了避免我们也可以在git log后面加上--pretty=onlion参数:

我们可以看到上面的一大串数字字符,这个是commit id

接下来我们如何把readme.txt退回到上一个版本呢?也就是add my版本

(对此表明,当前版本用HEAD表示,则上一个版本用HEAD^表示,同理上上一个版本用HEAD^^表示)

我们吧add warm版本退回到add my版本,可以使用git reset命令:

运行该命令之后显示为:

接下来我们看看之前的内容是否对呢?我们输入cat readme.txt命令以及显示结果为:

 

之后奇怪的事情发生了,当你用git log命令看一下仓库当前状态时,我们发现最新版本add warm不见了.....

(这就相当于时光穿梭啦,想回到古代,利用古代的技术你还想回来啊,做梦吧)

但其实办法还是有的,O(∩_∩)O,只要你上面的命令框还没有关掉,你还可以顺着往上找,找到add warm的commit id,就可以找回来了

然后再用命令cat readme.txt看一下readme.txt的内容:

 

困了,睡会觉吧,卡,电脑关上了,第二天又想找到新版本咋办?

那还不简单吗,输入git reflog(此命令用来记录你的每一次命令)命令,之后找到add warm的commit id就可以了

 

-------------------------------------------------------------------------------------------------------------------------

 

接下来我们讲一下工作区和暂存区

工作区:就是你在电脑里面能看到的目录,例如我下面的text文件夹就属于一个工作区:

版本库:可以看到工作区里面有一个.git,这个不算工作区,而是Git 的版本库,版本库里面有一个极为重要的东西就是称为                    stage(index)的暂存区,还有就是Git自动创建的第一个分支master,以及指向master的一个指针HEAD

              

我们知道我们把文件往Git版本库里添加的时候,是分布执行的:

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

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

 

因为我们在创建Git版本库时,Git自动创建了一个master分支,所以现在git commit就是往master分支上提交更改

(可简单理解为需要提交的文件修改被放到暂存区,然后一次性提交暂存区的所有修改)

比如我们在对readme.txt文件进行修改(添加一行):

 

修改完之后我们在工作区新增一个LICENSE文本文件(内容自定),之后用git status命令来查看一下当前状态

我们可以看到readme.txt文件已经被修改了,但是没有提交,并且LICENSE也没有被添加过,他的状态是Untracked

 

现在我们使用两次git add命令把readme.txt和LICENSE文件进行添加后,再用git status看一下当前状态

现在,暂存区的状态就变成下面这个样纸了

上面的意思就是用git add 命令把文件添加到暂存区,然后在执行git commit命令就可以一次性把暂存区的文件修改提交到分支

提交之后你的工作区是干净的,并且暂存区也没有任何内容了,看看下面那个漂亮的图就知道了

 

-------------------------------------------------------------------------------------------------------------------

 

掌握了工作区和暂存区,下面我们来讲一下关于Git管理修改的事情(其实,Git跟踪管理的是修改,而不是文件)

好,我们来分析一下为神马Git跟踪管理的是修改,而不是文件,咳咳:

我们先对readme.txt文件进行一个修改,emmm,加一行东西吧

然后在修改readme.txt

之后git commit命令进行提交

之后git status命令查看一下状态

尴尬了,显示未被提交,为啥呢,我们的操作步骤是第一次修改-->git add-->第二次修改-->git commit

首先Git管理的是修改,git add命令之后,第一次修改被放入到暂存区,但是第二次修改并没有放到暂存区,所以当然没有办法提交了,看来git commit 只负责暂存区的提交

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

可以看到第二次并没有被提交,所以要想提交的办法就是:

第一次修改-->git add-->第二次修改-->git add-->git commit

 

---------------------------------------------------------------------------------------------------------------

 

下面来说一下如何用Git进行撤销修改的吧

比如,昨晚上喝醉了在文件中添加了一行(My boss is a stupid!):

但是修改之后的文件还没有来的及被提交,第二天起来你突然发现了这个严重的问题,于是你想把它撤销或者删除,这个时候应该怎么办呢?

我们首先用git status命令看一下当前状态:

你会发现命令git checkout 可以丢弃工作区的修改:

(注:git checkout -- readme.txt中的--很重要,没有的--的话,就被“切换到另一个分支的”命令)

上面命令的意思就是把readme.txt文件在工作区的修改全部撤销,撤销会有两种情况:

1.readme.txt文件被修改之后没有被放到暂存区,现在撤销修改就是回到原来版本的状态

2.readme.txt文件被修改之后被放到暂存区,之后又做了修改,现在撤销修改就是回到被放到暂存区之后的状态

总的来说就是撤销一步,回到最近一次git add或git commit

接下来,我们再用命令cat readme.txt看一下文件的内容:

文本被恢复了,/斜眼笑

 

现在又出现了一种更严重的情况就是我们上面所说的,喝醉了,把文件给git add到暂存区了

但是,注意了,你此时只是把文件给整到暂存区了,还没有commit,此时你发现了这个所谓严重的问题

此时,你用git status查看一下状态:

可以看到显示,修改只是添加到了暂存区,并未提交

Git命令同时也告诉了我们,可以用git reset HEAD可以吧暂存区的修改撤销掉

git rest命令既可以退回版本,也可以吧暂存区的修改退回到工作区

 

此时我们再用git status命令查看一下暂存是应该是干净的,工作区有修改

世界和平,n(*≧▽≦*)n

 

----------------------------------------------------------------------------------------------------------------

 

下面我们来讲一下在Git中如何进行删除文件操作,我们直接干吧

首先,我们先添加一个新文件test.txt到Git中并且提交

一般情况,你通常直接在文件管理器里面删除了,或者可以用命令rm删掉

这个时候Git知道你删除了文件,我们再用git status命令查看一下:

我们从上面的命令可以看到test.txt文件被删除了,从而工作区和版本库就不一样了

现在上面有两个选择,第一种就是从版本库里面删除该文件,用git rm删掉,并且git commit

现在版本库里面的文件就被删除了,还有一种情况就是删错文件了,因为版本库里面还有误删文件,所以用命令git checkout可以把误删文件恢复到最新版本

git checkout实际上就是用版本库里面的版本替换工作区的版本,无论工作去删除或者修改,都可以一键还原

 

 

 


 

土豪,打赏一下博主吧,博主一定会创作出更好的教程!

 

 

土豪,打赏一下博主吧,博主一定会创作出更好的教程!

你可能感兴趣的:(Git)