Git版本控制工具学习(二)

Git版本控制工具学习(二) , 承接Git版本控制工具学习(一)

在上一节的学习当中,我们创建了一个Git库,使用了git init ,git add ,git commit等命令成功进行了一个文件的提交

那么现在我们不妨写改一下这个文件的内容(readme.txt)

下面是修改过后的文档内容

Welcome to zhonghangAlex's index
welcome to learn something
this message is created by zhonghangalex for testing status

这个时候我们可以进入git bash ,注意还是要处于这个git库的文件目录之下。

$ git status

可以看到下面的结果

进行了modifed提示,这个命令用来查看现在的git库状态,但它只能告诉你,你的哪个文件被改动了,那么怎么去查看具体做了什么样的修改呢?

$ git diff readme.txt

 注意在这个命令的书写当中diff后面要加文件名,于是就有了下面的运行结果

我们可以很清楚得看到我们新增的这一条消息 

在了解并确认好修改的内容之后就可以,就可以按照add 和commit两步进行文件的库提交了

$ git add readme.txt
$ git status
$ git commit -m "add a note"
$ git status

每执行一步命令我们都可以通过$ git status去查看git库状态,运行的结果如下:

此时我们就可以看到readme.txt这个文件成功提交了,但是,由于我们之前的操作,在git目录下形成了一个readme.txt.bak的文件,所以我们可以直接通过 "$git add ."这个命令进行全部添加,最后完成commit,于是就形成了一个干净的工作树

版本管理综述 

做完一次修改之后,我们紧接着进行再进行一次修改增加一句

this is my git

接着完成相应的提交操作

       然后我们开始进入到真正意义上的版本控制。

       从readme.txt这个文件的创建,到我们进行了两次修改,我们怎么去进行每个版本的控制呢?

       事实上我们可以通过$ git log 这个命令进行git 日志的查看(--pretty=oneline这个参数可以使得输出更简洁)

$ git log

       下面就会打印出日志的内容:

       在打印的数据中,我们看到的长串字符,是commit id的版本号,git的commit id是一个SHA1计算出来的非常大的数字,用十六进制表示。现在我们要进行一个版本的还原操作,就可以使用git reset命令

$ git reset --hard HEAD^

        至于为什么要在reset后面加 --hard在后面的内容中会机继续介绍,这里直接用即可

        此时我们看到文本中的内容也已经被还原了

        但是这个命令执行之后,你会发现你的log日志中,没有了关羽最后一次的记录,要想恢复该怎么办呢?如果你之前的命令行没有关闭的话,就可以找到这个版本的commit id 只需要找到前几位就可以了,git会自动帮你找到

        其实这里的HEAD是git内部的一个指针,在各个版本控制的时候,git只是改变了HEAD的指针指向地址。

        但如果在你进行恢复上一次版本的操作后,关闭了命令行,甚至关闭了计算机,却希望再一次回到最新的版本,没有了命令行已经输入过的commit id 那该怎么办,其实我们的每一条命令都被git记录,通过git reflog这个命令,我们可以查看到这个commit id

       所有操作基于的commit id都被记录了,然后我们就可以继续按照之前的操作,通过commit id 进行版本的前置还原了

什么是工作区,什么是暂存区 ?

       其实说回来,git add ,git commit 分部操作,并不是繁琐,在git的版本控制中,我们能看到的目录,你实际进行操作的文件资源管理器,是git的工作区,而通过git add或者git add .的操作之后,文件就被提交到了git的暂存区,最后的git commit命令则是将所有的内容提交到分支(master)

       还有一个需要注意的地方,git管理的是修改,比如你再readme.txt文件中添加了一句话,然后再运行git add .命令,然后再添加一句话,然后再运行 git commit 命令,此时使用git status查看状态,会发现第二次的修改并没有被提交。

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

$ git diff HEAD --readme.txt

撤销修改 

       那么在完成工作区的修改之后,有些时候我们发现修改错了,想恢复到之前的内容,那么我们可以先通过git status查看下git状态 

       git会提醒你使用git checkout --<file> 取消这次工作区的修改

$ git checkout --readme.txt

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

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

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

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

      但是如果你做了一次修改,而且使用了git add 把文件添加到了暂存区,应该如何撤销修改呢?

      

$ git reset HEAD <file>

       这样就可以使得已经添加到git暂存区的文件回到工作区

       git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。HEAD其实就是指向各个库版本的指针。 

       这个时候再使用 git status查看,会发现你的暂存区是干净的,工作区有修改,

       那么还记得怎么丢弃工作区吗?

$ git checkout -- readme.txt

$ git status

      最后发现工作树终于干净了 。

      那么扯了这么一大堆, 最后就留下删除了,其实如果你是在文件管理器中误删了某个文件,和修改是一样的,在工作区和在暂存区的两套方法一样适用。

未完待续,“见Git版本控制工具学习(三)”

猜你喜欢

转载自blog.csdn.net/qq_41000891/article/details/82764112