• 【Git】01-Git基础


    Git基础

    1. 简述

    1.1 版本管理演变

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

    1.2 Git的特点

    • 最优的存储能力
    • 非凡的性能
    • 开源
    • 很容易做备份
    • 支持离线操作
    • 很容易定制工作流程

    2. Git安装

    2.1 安装文档

    参照官方文档
    Git官方文档

    2.1 配置user信息

    配置user信息是为了在代码review或者变动产生时,进行邮件的提醒

    • 配置user.name

    git config --global user.name ‘your_name’

    • 配置user.email

    git config --global user.email ‘your_email@domain.com’

    config的三个作用域
    在这里插入图片描述

    3. 创建仓库

    3.1 场景

    • 把已有项目代码纳入Git管理

    $ cd 项目代码所在文件夹
    $ git init

    • 新建的项目直接用Git管理

    $ cd 某个文件夹
    $ git init your_proiect # 会在当前路径下创建和项目名称同名的文件夹
    $ cd your_project

    查看当前git暂存区git状态

    git status

    查看当前git日志

    git log

    git add 文件名称
    git commit -m’对添加文件的描述’

    3.2 暂存区和工作区

    在这里插入图片描述

    在工作目录上的修改的变更,Git会先添加到暂存区,暂存区的信息可以覆盖本地的工作目录,同时也可以提交到历史版本中

    文件复制

    cp 源文件路径 复制后新文件名称

    4. 重命名

    清除暂存区,工作区信息

    git reset --hard

    重命名

    git mv 需要变更的文件名 变更后的文件名
    eg: git mv readme readme.md // 将readme重命名为readme.md

    5. 常用git log版本历史

    5.1 查看当前分支日志

    git log

    在这里插入图片描述

    5.2 简洁查看日志

    git log – oneline

    在这里插入图片描述

    5.3 查看最近指定条数的日志

    git log -n 1 #查看最近1条日志

    在这里插入图片描述

    这里可以搭配 --oneline使用
    git log -n 1 --oneline

    在这里插入图片描述
    查看本地分支

    git branch -v

    创建分支

    git checkout -b #创建一个新的分支并切换到该分支
    这个命令相当于以下两个命令的组合
    git branch # 创建一个新分支
    git checkout # 切换到新分支
    当运行git checkout -b 时,Git会在当前提交的基础上创建一个新的分支,并将HEAD指向该分支

    查看所有分支的日志

    git log --all
    会显示所有分支的提交历史。这包括本地分支和远程分支。

    git log --all --graph #图形化显示演进历史

    6. 通过图形界面工具查看版本

    gitk #弹出并显示图形界面

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

    7. 探秘.git目录

    7.1 .git文件目录

    在这里插入图片描述

    7.2 HEAD文件

    通过 cat HEAD命令打开HEAD文件显示信息如下:

    在这里插入图片描述

    HEAD是一个文本文件,内容这是一个引用,当分支发生切换时,HEAD的内容会发生变化

    7.2 config文件

    通过 cat config查看文件信息如下
    在这里插入图片描述

    这里会记录和本地仓库相关的配置信息

    7.2 refs文件

    通过 cd refs切换值refs文件夹,查看里面内容为:
    在这里插入图片描述

    refs中存在tags和heads,意味着git仓库可以有很多tag标签(里程碑)和多个分支(heads)
    heads中记录所有的分支信息

    heads中内容记录了分支的信息,查看单个分支文件内容发现,其中记录的是分支的指针指向哪个commit

    查看文件类型

    git cat-file -t 文件名

    查看文件内容

    git cat-file -p 文件名

    7.3 object文件*

    object中存放的是多个文件夹和pack(松散文件的打包体),info信息
    进入到其中任一普通文件夹,文件中记录的是一个hash值,将文件将的名称+hash拼接在一起,通过类型查看命令可以发现,其类型为tree。

    查看tree文件信息,发现内部有blob对象

    8. commit/tree/blob三个对象关系

    8.1 Git对象关系

    在这里插入图片描述

    一个commit只对应一个tree,这个tree中存放的是当前commit对应的视图,这个视图存放了快照集合,这个集合是存放了当前commit对应的本项目仓库的所有文件和文件夹的快照

    tree中还可以包含tree和bolb,类似于文件夹中包含文件夹和文件

    git中如果文件内容相同,那么他们所对应的blob是相同的

    9. 分离头指针情况下的注意事项

    分离头指针指的是当前正工作在没有分支的状态下,编写的文件依然可以commit,但是并不会挂在任何一个分支下,如果这时候再切换分支,那么在分离头指针状态下的提交代码很可能会被当成垃圾被Git清理掉。
    如果日常工作中对代码做一些尝试性编辑,并不打算保存,那么分离头指针就有了很好的用处。

  • 相关阅读:
    交换两个数字(字符) 学习随笔
    基于树莓派CM4制作img系统镜像&批量制作TF卡
    类加载器
    SpringBoot_Vue实现简易图书管理
    网络安全-态势感知
    【Vue.js设计与实现】第4章 响应系统的作用与实现
    单点登录原理及JWT实现
    ubuntu22.04.1 新装后的常用设置
    QQ表情包存储位置解析
    【PowerQuery】Python自动刷新本地数据
  • 原文地址:https://blog.csdn.net/Tiger_shl/article/details/132613649