• GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件


    GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件

    前言

    Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

    我们这里就不多介绍这里的GIT了,百度百科维基百科上都有很多介绍,我们这里就不再介绍,直接来演示~~

    下面演示的均是Centos7.6系统,

    • 我们先来检测以下git有没有安装
    git --version
    
    • 1
    • 如果提示的是这样的就说明没有安装

    在这里插入图片描述

    一、安装git

    • 执行以下命令,安装git
    yum instal -y git
    
    • 1
    • 如果执行失败的话就先更新一下系统
    yum update -y
    
    • 1
    • 然后再检测是否安装成功~

    在这里插入图片描述


    二、git基本操作

    2.1 初始化git

    • 安装好git后,我们就要创建一个本地仓库,就是要初始化一下

    创建文件夹

    mkdir gitcode
    
    • 1

    进入文件夹

    cd gitcode/
    
    • 1

    初始化git

    git init
    
    • 1

    查看是否初始化成功

    ls -al
    
    • 1

    在这里插入图片描述

    • 查看隐藏文件git目录下,有什么文件~~

    在这里插入图片描述

    • 我们需要设置邮箱和用户名【这里是局部生效的配置用户名和邮箱】

    2.2 配置局部生效

    配置用户名

    git config user.name "shilin"
    
    • 1

    配置邮箱

    git config user.email "intshanxi@163.com"
    
    • 1

    查看配置

    git config -l
    
    • 1

    在这里插入图片描述


    那我想要删除刚刚配置的,就可以执行以下命令

    删除用户名

    git config --unset user.name
    
    • 1

    删除邮箱

    git config --unset user.email
    
    • 1

    在这里插入图片描述

    2.3 配置全局生效

    • 将配置项生效所有仓库配置项

    配置用户名

    git config --global user.name "intshanxi"
    
    • 1

    配置邮箱

    git config --global user.email "intshanxi@163.com"
    
    • 1

    查看刚刚配置的

    git config -l
    
    • 1

    在这里插入图片描述

    • 那我想要删除刚刚配置的,就可以执行以下命令~

    删除用户名

    git config --global --unset user.name
    
    • 1

    删除邮箱

    git config --global --unset user.email
    
    • 1
    • 接下来我们就往这个仓库里生成一个文件
    touch ReadMe
    
    • 1
    • 在目前情况下,git是不能管理这个文件的~~

    在这里插入图片描述


    • 我现在往git里添加了一点东西

    在这里插入图片描述


    三、认识工作区、暂存区、版本库

    3.1 添加文件场景一

    • 我们就来看第一个步骤
    git add 文件名
    
    • 1

    或者只写一个.,这个意思就是全部添加

    • 我们就来看第二个步骤
    git commit -m '要描述的细节'
    
    • 1

    在这里插入图片描述

    • 创建多个文件
    touch file1 file2 file3
    
    • 1
    • 我们还可以用.来一键添加

    在这里插入图片描述

    3.2 查看添加的文件

    • 还可以查看最近提交的日志
    git log
    
    • 1

    在这里插入图片描述

    • 我们还可以再打印的简单一点,方便观察
    git log --pretty=oneline
    
    • 1

    在这里插入图片描述

    • 查看git日志后,commit后面的一串字符是(安全哈希算法)加密过的文件

    在这里插入图片描述

    • 我们可以通过命令来查看这个具体提交记录
    git cat-file -p fc9176efe2397e38411e1ec44b9f58be6e0cc99f
    
    • 1

    在这里插入图片描述

    • 在其中有一行tree 0e6b1780b73cd9220ec5073dc64b42f7ad4bd945
    • 然后再查看一下这个
    git cat-file -p 0e6b1780b73cd9220ec5073dc64b42f7ad4bd945
    
    • 1
    • 继续查看文件内容
    git cat-file -p 8d0e41234f24b6da002d962a26c2495ea16a425f
    
    • 1

    在这里插入图片描述

    3.3 添加文件场景二

    git add file4
    touch file5
    git commit -m 'add file4'
    
    • 1
    • 2
    • 3
    • 这里虽然添加了两个文件,但是只有file4添加到了暂存区,提交修改的时候只有file4发生了变化,而file5没有发生变化

    在这里插入图片描述

    四、修改文件

    • git其实管理的是修改,而不是文件

    • 我们先修改了ReadMe

    在这里插入图片描述

    4.1 查看工作区的状态

    • 我们查看当前工作区的状态
    git status
    
    • 1

    在这里插入图片描述

    • 那我们想查看修改了哪些内容呢?
    git diff 文件名
    
    • 1

    在这里插入图片描述

    • 这个时候我们再提交一下
    git add ReadMe
    
    • 1
    • 查看状态
    git status
    
    • 1

    在这里插入图片描述

    • 这个时候就再提交
    git commit -m 'add modify ReadMe file'
    
    • 1
    • 再查看
    git status
    
    • 1

    在这里插入图片描述

    五、版本回退

    • 刚开始文件里的内容只有一行,后来添加了两行

    • 对于这个文件来说是有两个版本的

    在这里插入图片描述

    • 这里的回退命令是git reset可以指定某一次提交的版本

    • git reset 命令语法格式为: git reset [--soft | --mixed | --hard] [HEAD]

      • –mixed 为默认选项,使⽤时可以不用带该参数。该参数将暂存区的内容退回为指定提交版本内容,工作区文件保持不变。
      • –soft 参数对于工作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。
      • –hard 参数将暂存区与工作区都退回到指定版本。切记工作区有未提交的代码时不要用这个命令,因为工作区会回滚,你没有提交的代码就再也找不回了,所以使用该参数前一定要慎重。
    • HEAD 说明:
      ◦ 可直接写成 commit id,表示指定退回的版本
      ◦ HEAD 表示当前版本
      ◦ HEAD^ 上一个版本
      ◦ HEAD^^ 上上一个版本
      ◦ 以此类推…

    • 可以使用 ~数字表示:
      ◦ HEAD~0 表示当前版本
      ◦ HEAD~1 上一个版本
      ◦ HEAD^2 上上一个版本
      ◦ 以此类推…


    • 查看日志
    git log --pretty=oneline
    
    • 1
    • 回退到最初版本
    git reset --hard eea6e0091277b0e3de6739d0cede91333284b6e7
    
    • 1

    在这里插入图片描述

    • 可以看到一旦回到这一次,我们后面创建的文件都会被删除
    • 我们再来看文件的内容
    cat ReadMe
    
    • 1

    在这里插入图片描述

    • 查看日志
    git log --pretty=oneline
    
    • 1

    在这里插入图片描述

    • 那有人说我又后悔了怎么办?
    • 想要再回退回去
    • 我们刚刚打印过这一个最新的版本我们就回退到这个版本
    git reset --hard b842e9f3f8a267b0957389abae0dbc159d12fd43
    
    • 1

    在这里插入图片描述

    • 我们再来看一下当前目录下
    • 文件回来了,文件里的内容也会来了

    在这里插入图片描述

    • 再来打印这个日志
    • 这个log也回来了
    git log --pretty=oneline
    
    • 1

    在这里插入图片描述

    • 那我回退了最初的版本后,找不到那个字符串了怎么办?
    • 我们还有一种方法

    • 查看
    git reflog
    
    • 1

    在这里插入图片描述

    • 回退版本
    git reset --hard b842e9f
    
    • 1

    在这里插入图片描述

    • 这样就可以回退回去了

    • 那么这里的版本回退为什么会这么快呢?
    • 是因为有一个HEAD指针

    在这里插入图片描述

    六、撤销修改

    • 如果我们在我们的工作区写了很长时间代码,越写越写不下去,觉得自己写的实在是垃圾,想恢复到上一个版本。

    在这里插入图片描述

    6.1 情况一:对于工作区的代码,还没有add

    • 我们先对ReadMe进行修改

    在这里插入图片描述

    • 我们想撤销我们的代码,我们可以重新再次编辑删除掉那一行代码,就可以了

    • 那写了很多呢?想一次性撤销,那怎么办呢?接下来我们来看~~

    • 查看修改了哪些内容

    git diff ReadMe
    
    • 1

    在这里插入图片描述

    • 想要一次撤销,我们执行以下命令
    git checkout -- ReadMe
    
    • 1
    • 这里的--就是回退到最近一次add或者commit的操作

    • 我们再次打印,新增的那一行就没有了

    在这里插入图片描述

    6.2 情况二:已经add ,但没有commit

    • add 后还是保存到了暂存区呢?怎么撤销呢?

    在这里插入图片描述

    • 让我们来回忆一下学过的git reset回退命令,该命令如果使用 --mixed 参数,可以将暂存区的内容退回为指定的版本内容,但工作区文件保持不变。那我们就可以回退下暂存区的内容了!!!
    git reset HEAD ReadMe
    
    • 1
    • HEAD代表当前版本
    • HEAD^代表上一个版本
    • HEAD^^代表上一个版本

    在这里插入图片描述

    • 这个时候再进行情况一的回退
    git checkout -- ReadMe
    
    • 1

    在这里插入图片描述

    6.3 情况三:已经add ,并且也commit 了

    • 我们可以git reset --hard HEAD^ 回退到上一个版本!不过,这是有条件的,就是你还没有把自己的本地版本库推送到远程。还记得Git是分布式版本控制系统吗?我们后面章节会讲到远程版本库,一旦你推送到远程版本库,你就真的惨了

    • 我们先修改文件,然后添加文件【add】【commit】

    • 然后修改

    git reset --hard HEAD^
    
    • 1

    在这里插入图片描述

    七、删除文件

    • 删除文件
    git rm file
    
    • 1
    git commit -m '记录'
    
    • 1

    在这里插入图片描述


    我们这里的git基础操作就到这里了,我们后面还有一些进阶操作~~
    感谢大家的收看,我们共同进步!!!

  • 相关阅读:
    原生微信小程序电影购票+后台管理系统[含文档]
    window隐私保护设置(win10)
    MongoDB副本集配置和创建
    配置文件config
    前端 获取API的响应时间 的方法总结
    WEB前端和JAVA薪资前景究竟哪个更高?
    多线程的初识
    WEB自动化_元素定位_elements与element_元素列表
    基于hexo框架快速从0到1搭建个人博客----文章一键发布(五)
    vscode中4个json的区别和联系
  • 原文地址:https://blog.csdn.net/2201_76004325/article/details/134469878