• 一文了解解Git安装及使用


    git版本管理

    Git工作状态

    Git管理项目时,文件流转分为三个工作区域

    1. Git的工作目录
      • 平时创建文件,写代码、修改代码,都在工作目录,
    2. 暂存区域
      • 作用:保存你现在已经修改了哪些代码,做一个记录,等你提交代码之后,把你这次修改的内容保存到本地仓库,会生成一次版本记录,
      • 假如你修改了三个文件,这三个文件就会在暂存区生成索引,来记录你这三个文件,把这三个索引当作一个版本,提交到本地仓库中去。
      • 下次就可以根据版本号,去回退到想要的版本。
    3. 以及本地仓库
      • 保存你提交的信息,然后生成一个版本,所有的版本记录都在本地仓库中进行保存。

    对于任何一个文件,在Git中只有三种状态

    三种状态

    1. 已修改(modified):已修改表示创建或修改了某个文件,但还没有提交保存,
    2. 已暂存(staged):已暂存表示把已修改的文件放在下次提交时要保存的清单中
    3. 已提交(committed):已提交表示该文件已经被安全地保存在本地数据框中

    原理流程步骤

    工作目录

    1. 从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫工作目录(写代码的地方)
    2. 这些文件实际上都是从Git目录中的压缩对象数据库中提取出来的;
    3. 接下来就可以在工作目录中对这些文件进行编辑;

    暂存区域

    1. 只不过是个简单的文件
    2. .git目录之下,名为index,它一般很小,一般不超过1KB左右
    3. 一般都在Git目录中
    4. 有时候人们会把这个文件叫索引文件

    git目录(本地仓库)

    工作流程

    git基本操作

    初始化用户名和邮箱

    git config --global user.name '自己的名字'   # (不用加引号)
    git config --global user.email '自己的邮箱'  # (不用加引号)
    git config --list  # 查看
    
    • 1
    • 2
    • 3

    基本操作

    1.创建一个空的项目

    可以在任意一个文件夹中创建一个目录,比如uesr1文件夹,在user1文件中,右键,选择git base here,这时路径就切换到了uesr1里面
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    此时已经需要进入第2步,初始化,才能建立本地仓库

    2.在空的工程中通过 git base here命令窗口初始化仓库——git init

    在步骤1中代开的窗口中,通过git init初始化,
    在这里插入图片描述

    表示这个工程已经生成了本地仓库,但是user1文件夹中什么也没有,这时需要显示隐藏文件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3.在空的项目当中创建添加一些文件

    在这里插入图片描述


    在这里插入图片描述

    4.查看这些文件在git当中的状态

    • git status
      目前状态:已修改(红色文件)
      在这里插入图片描述
    • 发现文件和文件夹都是红色,当出现这种情况的时候,说明这些文件还没有添加到暂存区中,也没有添加到git仓库中去

    5.把文件添加git仓库中

    执行git add -A 命令(把所有内容添加到暂存区),再查看状态,也可以用git add *
    在这里插入图片描述
    此时全部变成绿色,文件已经添加到git暂存区当中,还没有提交。

    6.提交

    • 执行 git commit
    • 在执行 commit的时候,会进入一个vi编辑器界面(linux中的编辑器),提示让输入信息,输入本次做了哪些操作,保存并退出即可。
    • 不进入vi编辑器de方法 git commit -m ‘本次做了哪些操作’
    • 在这里插入图片描述
      此时已经把文件提交到了本地仓库,已经生成了一个记录,当你做完commit之后,再去查看状态
      在这里插入图片描述
      提示,没有任何信息需要提交

    7.查看历史

    git log  # 查看提交日志
    
    • 1

    在这里插入图片描述
    图中绿色框的这串数字,唯一记录你提交内容的记录。

    对文件进行修改

    假设操作完之后,我不想要这步操作了,想要回退(可以理解为撤回),

    1.打开index.html对文件的内容添加进行修改

    对index.html(已创建)进行编辑

    vim index.html
    
    • 1

    回车后,进入下面的界面,
    在这里插入图片描述

    按一下 i ,则可以进入编辑状态
    在这里插入图片描述
    输入内容hello world
    在这里插入图片描述
    想要把输入的内容保存:先按esc键,接着按shift+冒号,看下图的变化

    在这里插入图片描述
    输入 wq 命令,保存这次操作
    在这里插入图片描述
    回车后,回到界面
    在这里插入图片描述
    查看文件内容
    在这里插入图片描述
    创建一个test.txt文本,使用touch命令,
    在这里插入图片描述
    此时,相当于在我们user1中修改了index.html,并添加了一个文件,叫test.txt,此时,再查看一下状态,使用 git status命令,回车后,看到了红色的index.html和test.html,此时还未添加到暂存区,所以状态为红色,
    在这里插入图片描述
    添加到暂存区,使用 git add *命令,执行之后,所有内容都已添加到暂存区,
    在这里插入图片描述

    2.修改之后再查看状态时,会出现modified状态

    然后,再查看一下状态 git status命令,执行之后,发现颜色已经变绿,
    在这里插入图片描述
    变绿之后,再提交到本地仓库,git commit -m + 信息说明,回车
    在这里插入图片描述

    3.通过 git log 查看日志,可以看到,有一条新的 sha 记录

    回车之后,内容已经提交到了本地仓库,此时可以使用 git log 命令去查看日志,查看之后,发现又生成了一个版本(commit后保的一串字母+数字sha值),你每一次提交,都会给我们生成一个版本,下图中显示(第一次:创建了文件,创建了uer1项目 第二次:修改了index.html文件,添加了test.txt文件)
    在这里插入图片描述
    在user1路径中,ls一下,能够看到刚操作过的index.html文件和test.txt文件
    在这里插入图片描述
    使用 cat 命令查看一下内容
    在这里插入图片描述
    此时,我想回退到第二次修改前的版本

    4. 恢复历史

    • 第一个sha值就是一个版本记录,可能使用reset命令回复到指定的版本

    • 格式——git reset -hard sha值

    • 示例(sha值可以只复制前几位,也可以全部复制)

      • 回车之后,已经回退到上一个版本
        在这里插入图片描述
        用 ls 查看一下,只能看到以前的(index.html),而不能看到test.txt文件了
        在这里插入图片描述
        同时,index.html里面的内容也没了,用cat index.html 命令查看一下
        在这里插入图片描述
        发现回到了最初添加项目的版本,在这个版本中,并没有给index.html添加内容,所以 cat index.html 命令返回的内容为空。

    HEAD和index

    HEAD 记录了当前使用的哪个版本,它像一个指针一样,指向当前的版本。index记录了暂存区有哪些文件
    在这里插入图片描述
    创建一个文件 a.txt, touch a.txt,此时a.txt为红色
    在这里插入图片描述
    通过[git add *]命令,将其添加到暂存区中,添加到暂存区之后,就是一个索引,指向了a.txt,就告诉你现在a.txt文件在暂存区里面,是需要被提交到本地仓库的,
    在这里插入图片描述
    通过[git commit -m ‘说明’]命令,将暂存区中索引指向的文件(a.txt)提交到本地仓库,生成一个新的版本,此时HEAD将指向新的版本。
    在这里插入图片描述

    .git文件

    分支

    分支概念

    • 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线
      • 比如,正在开发主线任务时,收到一个新通知,要去做一个小功能,而别人正在开发主线功能,此时,就可以从下图879efe处开辟一个小分支,最后还可以把做的内容合并起来。
    • 几乎所有的版本控制系统,都以某种形式支持分支。
      • 使用的时候,默认它有一个主分支,master代表主分支

    在这里插入图片描述

    每一次提交的时候,都会生成一个新的版本,并且HEAD指针会指向新的版本,
    在这里插入图片描述
    在这里插入图片描述
    再提交一次的话,HEAD会指向新的任务
    在这里插入图片描述
    三个提交,形成一条横线,这个横线称为主分支,可以理解为树干(默认存在)。后续可以在主分支上发叉(分支),
    在这里插入图片描述
    分支:在原来的任务上,开辟新的任务,来做新的任务,最后还可以把任务合并起来
    在这里插入图片描述

    创建分支

    • 命令
      • git branch 分支名称
        在这里插入图片描述
        此时,虽然创建了工作区(红框),但HEAD指向的工作区仍然在主分支(master)上,
        在这里插入图片描述
        在这里插入图片描述
        查看有没有创建好这个主分支,进入下一部分

    查看分支

    • 查看有没有创建好这个主分支
      • git branch 会列出当前有哪些分支,以及当前正在使用的分支是哪一个(当前使用的用*标记,下图所示,绿色)
      • 绿色为当前所在分支默认有一个master主分支

    在这里插入图片描述

    切换分支

    • 我不想在当前分支了,想切换到另一个分支去操作
      • git checkout 分支名称(tab可以补齐)
        在这里插入图片描述
        新的分支,相当于把原来的代码,copy一份,放在了新的分支中,代码是一样的,然后通过分支切换,使得HEAD指向新的分支。当前工作区是新创建的分支
        在这里插入图片描述
        由于分支newBranch是从主分支复制过来的,所以其日志信息与主分支日志信息完全一样。
        在这里插入图片描述

    操作

    合并分支

    删除分支

    需求

  • 相关阅读:
    【攻破css系列——第九天】常规流
    day43 基础知识练习
    PMP备考大全:经典题库(敏捷管理第8期)
    MySQL中explain各字段详解及举例
    TCP/IP(五)TCP的连接管理(二)三次握手细节
    C1 ARMv7-M Debug
    创建你的第一个页面
    MPP 架构在 OLAP 数据库的运用
    Python正则表达式操作(re模块使用篇)
    面试 Python 基础八股文十问十答第七期
  • 原文地址:https://blog.csdn.net/weixin_46713695/article/details/126201462