码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Git】01-Git基础


    文章目录

    • Git基础
      • 1. 简述
        • 1.1 版本管理演变
        • 1.2 Git的特点
      • 2. Git安装
        • 2.1 安装文档
        • 2.1 配置user信息
      • 3. 创建仓库
        • 3.1 场景
        • 3.2 暂存区和工作区
      • 4. 重命名
      • 5. 常用git log版本历史
        • 5.1 查看当前分支日志
        • 5.2 简洁查看日志
        • 5.3 查看最近指定条数的日志
      • 6. 通过图形界面工具查看版本
      • 7. 探秘.git目录
        • 7.1 .git文件目录
        • 7.2 HEAD文件
        • 7.2 config文件
        • 7.2 refs文件
        • 7.3 object文件*
      • 8. commit/tree/blob三个对象关系
        • 8.1 Git对象关系
      • 9. 分离头指针情况下的注意事项

    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清理掉。
    如果日常工作中对代码做一些尝试性编辑,并不打算保存,那么分离头指针就有了很好的用处。

  • 相关阅读:
    [网络工程师]-防火墙-防火墙技术
    【JVM】关于 JVM,你需要掌握这些 | 一文彻底吃透 JVM 系列
    位运算常用技巧以及练习
    Java中的dozer对象转换
    17_星仔带你学Java之IO操作①
    oracle学习48-oracle命令窗口执行sql语句
    (02)Cartographer源码无死角解析-(15) Node::AddTrajectory()→回调函数之数据流向分析
    如何利用现代工具来管理多项目
    E. Block Sequence Codeforces Round 903 (Div. 3)
    RT-DETR算法优化改进:Backbone改进 | VanillaNet一种新视觉Backbone,极简且强大!华为诺亚2023
  • 原文地址:https://blog.csdn.net/Tiger_shl/article/details/132613649
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号