Git之(二)Git中常用命令——时光穿梭机

二、Git中常用命令——时光穿梭机

2.1 创建版本库

  1. 创建一个空目录(这个目录也可以不使用命令创建)

    $ mkdir git1(目录名)
    

    在F盘的Code/Git目录下创建一个git1的空目录:
    在这里插入图片描述

    小贴士:
    在创建版本库之前一般都要设置自己的用户名和邮箱(这个不是强制要求):
    git config --global user.name “用户名”
    git config --global user.email "邮箱"

  2. 切换到此目录

    $ cd git1(目录名)
    lenovo@LAPTOP-LRE84PDF MINGW64 /f/Code/Git/git1
    

    在这里插入图片描述

  3. 把这个目录变成Git可以管理的仓库

    $ git init
    Initialized empty Git repository in F:/Code/Git/git1/.git/
    

    在这里插入图片描述
    如果没有看见这个.git隐藏目录,可以根据命令查看:

    $ ls -ah
    ./  ../  .git/
    
  4. 编写文件并将其添加到版本库

    ▲ 编写一个readme.txt文件(这个文件一定放到git1目录下),内容如下:

    Git is a version control system.
    Git is free software.
    

    ▲ 把此文件放到Git仓库:
    ① 把文件添加到仓库
    这个命令可以反复多次使用,用来添加多个文件。

    $ git add readme.txt
    

    这个命令执行过后没有任何显示,此所谓“没有消息就是最好的消息”。

    ② 把文件提交到仓库
    提交之后文件就被保存到Git仓库了。

    $ git commit -m "write a readme file"
    [master (root-commit) 1bfc448] write a readme file
     1 file changed, 2 insertions(+)
     create mode 100644 readme.txt
    

    在这里插入图片描述

    注意:

    1. -m 这个命令无论是对于你自己的查找还是对于别人的阅读都非常重要,当然,嫌麻烦的小伙伴可以不写试试哦!
    2. 把文件放到git仓库之所以分为两个步骤,是因为commit一次可以提交很多个文件,我们可以多次add很多个不同的文件,然后一次提交。
      比如:
      $ git add file1.txt
      $ git add file2.txt file3.txt
      $ git commit -m “add three files.”

2.2 版本回退

  1. 修改文件内容并将其添加到版本库
    ▲ 修改文件内容(修改两次)

    第一次修改

    Git is a distributed version control system.
    Git is free software.
    

    第二次修改

    Git is a distributed version control system.
    Git is free software distributed under the GPL.
    

    ▲ 将修改后的文件添加到版本库
    ①把文件添加到仓库
    两次添加命令相同

    $ git add readme.txt
    

    ②把文件提交到仓库

    第一次提交

    $ git commit -m "add distribute--twice version"
    [master 9b143b4] add distribute--twice version
     1 file changed, 1 insertion(+), 1 deletion(-)
    

    在这里插入图片描述

    第二次提交

    $ git commit -m "append GPL--third version"
    [master 3881c73] append GPL--third version
     1 file changed, 1 insertion(+), 1 deletion(-)
    

    在这里插入图片描述

  2. 查看修改的历史记录

    $ git log
    

    在这里插入图片描述

  3. 版本回退

    $ git reset --hard HEAD^
    HEAD is now at 9b143b4 add distribute--twice version
    

    回退之前所在的版本是“append GPL–third version”,用HEAD表示当前版本,上一个版本就是HEAD ^,上上个版本就是HEAD ^ ^,也就是退回几个版本就有几个 ^,当然,当有100个 ^时比较容易数不过来,所以一般写成HEAD~100。

    查看回退之后readme.txt的内容是不是第二个版本:

    $ cat readme.txt
    Git is a distributed version control system.
    Git is free software.
    

    这时我们来查看当前版本库的状态:

    $ git log
    

    在这里插入图片描述
    当前的版本是第二个版本,我们发现第三个版本(最新的那个版本)已经看不见了,如果你还是想要回去,可以使用版本前进。

  4. 版本前进

    只有上面的命令窗口还没有被关掉,我们就可以顺着往上找到那个版本的commit id号:
    在这里插入图片描述
    根据版本号前进:

    $ git reset --hard 3881c738
    HEAD is now at 3881c73 append GPL--third version
    

    在这里插入图片描述

    嘿嘿,本仙女又回来啦!

当前版本
在这里插入图片描述
版本回退
在这里插入图片描述
在这里插入图片描述
版本前进
在这里插入图片描述

在这里插入图片描述

2.3 工作区和暂存区

  • 工作区(Working Directory)

    工作区就是我们在电脑里能看到的目录,比如我的文件夹git1就是一个工作区。
    在这里插入图片描述

  • 暂存区(stage)

    我们都知道工作区中有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

    Git的版本库里存了很多东西,其中最重要的就是暂存区,还有Git为我们自动创建的第一个分支master以及指向master的一个指针HEAD。

    在这里插入图片描述

    现在,我们再次对readme.txt文件进行修改,并复制出一份相同的文件readme2.txt:

    Git is a distributed version control system.
    Git is free software distributed under the GPL.
    Git has a mutable index called stage.
    

    这时我们先来查看一下工作状态:

    $ git status
    

    在这里插入图片描述
    下面我们将这两个文件都添加进来:

    $ git add readme.txt
    $ git add readme2.txt
    

    在这里插入图片描述
    这个时候暂存区就开始发挥作用了,两个新添加的文件都被收录进了暂存区,等待被提交:
    在这里插入图片描述
    一旦将暂存区的文件提交后,如果又没有对工作区做任何修改,那么这个时候的暂存区就是“干净”的:

    $ git status
    On branch master
    nothing to commit, working tree clean
    

    在这里插入图片描述
    在这里插入图片描述

2.4 管理修改

修改——顾名思义,就是增加删除更改一些字符和文件,而Git跟踪并管理的就是修改,而不是文件本身

现在,我们再次将readme.txt文件进行修改:

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes.

然后进行add操作:

$ git add readme.txt

在这里插入图片描述

然后,再次修改readme.txt文件:

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.

直接对readme.txt文件进行提交:

$ git commit -m "git tracks changes--fifth version"
[master 33f951f] git tracks changes--fifth version
 1 file changed, 2 insertions(+), 1 deletion(-)

在这里插入图片描述

这时会发现,第二次修改的内容并没有被提交,我们不禁会回忆刚刚的一波操作:第一次修改后:add,第二次修改后:commit,很明显第二次的修改并没有add进暂存区,所以缓存区自然就不会管第二次的修改啦,人家也只是负责将自己区域的内容提交就好了。

如果你还是想要将第二次的修改提交,可以继续先add后commit,或者两次修改都add之后再一起commit。

所以说:Git跟踪并管理的就是修改,而不是文件本身

2.5 撤销修改

  • 撤销在工作区的修改

    现在再次修改readme.txt文件:

    Git is a distributed version control system.
    Git is free software distributed under the GPL.
    Git has a mutable index called stage.
    Git tracks changes of files.
    Because of my stupid resulting in this mass!
    

    在提交前猛地发现,这时我添加的最后一句内容是不合适的,就很想删掉他:

    $ git checkout -- readme.txt
    

    在这里插入图片描述
    这时,撤销修改后就回到了和版本库一模一样的状态了。
    如果已经经文件添加到了暂存区又做了修改,那么撤销后就回到了添加到暂存区后的状态了。

  • 撤销在暂存区的修改

    现在再次次改readme.txt的内容并add到暂存区:

    Git is a distributed version control system.
    Git is free software distributed under the GPL.
    Git has a mutable index called stage.
    Git tracks changes.
    Because of my stupid resulting in this big mass!
    
    $ git add readme.txt
    

    在这里插入图片描述

    现在却发现内容不合适想要撤销,这时只是把暂存区的修改回退到了工作区:

    $ git reset HEAD readme.txt
    Unstaged changes after reset:
    M       readme.txt
    

    在这里插入图片描述
    现在将工作区的修改撤销即可:

    $ git checkout -- readme.txt
    

    在这里插入图片描述

  • 撤销在版本库的修改

    当我们已经将文件提交到了版本库却发现内容不合适时,要想撤销本次的提交,只需要版本回退到上一个版本就可以了,前提是你还没有将自己的本地版本库推送到远程仓库中。

    版本回退你往上扒拉扒拉就看到啦!

2.6 删除文件

在Git中,删除也是一个修改操作,下面上代码:

  1. 在git1这个目录中新建一个文件delete.txt(内容随便扒拉一点就ok):

    I want to delete this file!
    
  2. 将此文件添加到版本库:

    $ git add delete.txt
    
    $ git commit -m "add delete.txt"
    [master d70b65c] add delete.txt
     1 file changed, 1 insertion(+)
     create mode 100644 delete.txt
    

    在这里插入图片描述

  3. 在git目录下删除文件delete.txt(也可以不用命令直接删除):

    rm delete.txt
    

    这个时候,Git肯定知道你已经删除了文件,工作区和版本库就不一致了,查看哪些文件被删除了:
    在这里插入图片描述

  4. 从版本库里删除该文件:

    $ git rm delete.txt
    rm 'delete.txt'
    
    $ git commit -m "remove delete.txt"
    [master 2217b6e] remove delete.txt
     1 file changed, 1 deletion(-)
     delete mode 100644 delete.txt
    

    在这里插入图片描述
    这个时候这个文件就从版本库里彻底删除了!

  5. 当这个文件是被错删了的,我们就要想办法将其恢复:

    $ git checkout -- delete.txt
    

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

    你只能恢复到最新版本的文件,但是会丢失最近一次提交后修改的内容。

    注意:如果你误删的文件没有添加到版本库就被删除了,那它是无法恢复的!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值