• Git学习使用笔记--(一)



    学习 极客时间玩转Git课程记录
    链接: http://gk.link/a/11yCe


    配置user信息

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

    • config有三个作用域
      – git config --local 只对某个仓库有效
      – git config --global 对当前用户所有仓库有效
      – git config --system 对系统所有登陆的用户有效

    显示config的配置, 加 --list
    – git config --local --list
    – git config --global --list
    – git config --system --list

    示例

    在这里插入图片描述
    在仓库中,git config local 优先级高于git config global


    创建Git仓库

    两种场景
    1、把已有的项目代码纳入Git管理

     	cd 项目代码所在文件夹
     	git init
    
    • 1
    • 2

    示例

    在这里插入图片描述

    2、新建的项目直接用Git管理

    cd 目标文件夹
    git init your_project		#会在当前路径下创建和项目名称同名的文件夹
    cd your_project
    
    • 1
    • 2
    • 3

    往仓库添加文件

    添加文件时,会先添加到暂存区,再提交生成对应版本

    在这里插入图片描述
    在工作目录创建或添加文件后,可以用命令git status 命令查看
    在这里插入图片描述
    此时发现有logging目录下的文件为untracked file状态,

    git add 文件名或文件夹名		#添加文件到暂存区
    
    • 1

    此时再看git status可以发现文件被添加到暂存区了。
    在这里插入图片描述
    此时使用git commit 命令来提交添加变更理由,纳入到版本库里。

    git commit -m'your comment'
    
    • 1

    提交后可以用git log命令来查看提交记录
    在这里插入图片描述

    git reset --hard清理掉暂存区和工作区清理

    当我们需要对已经提交的文件进行重命名的时候,可以使用命令

    git mv 源文件名 目标文件名
    
    • 1

    在这里插入图片描述
    可以简明看log,命令`git log --oneline

    git log --oneline
    
    • 1


    创建分支

    查看有多少分支

    git branch -a
    
    • 1

    在这里插入图片描述
    创建分支

    git checkout -b 分支名  分支版本号
    
    • 1

    如同示例,先查看所有版本号,选择你所需切换的版本进行分之创建
    在这里插入图片描述
    通过在不同版本分支中提交文件,创建多个分支,然后可以通过以图的形式看版本分支。

    git log --oneline --all -n5 --graph
    
    • 1

    其中–oneline简介显示,–all显示全部分枝日志,-n5 显示5条日制,–graph 以图形式展示

    在这里插入图片描述

    删除分支

    使用命令git branch -d 分支名来删除对应分支
    在这里插入图片描述
    -d 不能删除时,在确认删除当前分支不会对项目造成影响的情况下可以使用-D进行删除

    通过图形工具来查看版本历史

    可以通过图形化界面来查看git的不同版本信息。
    输入命令gitk

    gitk
    
    • 1

    在这里插入图片描述

    .git目录

    在这里插入图片描述

    • COMMIT_EDITMSG
    • config 当前 git 的配置文件
    • description (仓库的描述信息文件)
    • HEAD (指向当前所在的分支),例如当前在 develop 分支,实际指向地址是 refs/heads/develop
    • hooks [文件夹]
    • index
    • info [文件夹]
    • logs [文件夹]
    • objects [文件夹] (存放所有的 git 对象,对象哈希值前 2 位作为文件夹名称,后 38 位作为对象文件名, 可通过 git cat-file -p 命令,拼接文件夹名称+文件名查看)
    • ORIG_HEAD
    • refs [文件夹]
    • heads (存放当前项目的所有分支)
    • tags (存放的当前项目的所有标签,又叫做里程碑)

    • cat 命令, 功能:用来显示文件。 例如 cat text.md 显示 text.md 文件的内容
    • ls -al 命令, 表示列出当前目录下的所有文件(包括隐藏文件)
    • git cat-file -t 命令 , 查看 git 对象的类型
    • git cat-file -p 命令, 查看 git 对象的内容
    • git cat-file -s 命令, 查看 git 对象的大小


    commit、tree和blob对象关系

    在这里插入图片描述
    如图所示,每个commit对应一个树。git里每个blob只与文件内容有关,只要文件内容相同,那就是一个blob。

    首先 通过git log 查看版本信息,
    在这里插入图片描述
    通过命令

    git cat-file -p 分支摘要
    
    • 1

    可以看到的出的内容为一棵树
    在这里插入图片描述
    再通过命令

    git cat-file -p 树摘要
    
    • 1

    可以得到这棵树对应的内容
    在这里插入图片描述
    任意选择一个blob使用git cat-file -p 摘要命令打开,可以得到对应内容
    在这里插入图片描述

    git add命令添加文件后,会在.get/objects目录下创建对应的实体。
    实验步骤:
    1、在空文件夹下初始化git仓库,并创建文件夹,可以发现并没有内容产生。
    在这里插入图片描述

    2、写入内容文件后,再进行查找即可看到,
    在这里插入图片描述
    由此可知,在讲代码提交到暂存区的时候,git就会创建对应的blob。
    注意,在查询的时候,记得加上objects后的文件夹名
    在这里插入图片描述
    在commit提交后,可以查看对应的树和commit
    在这里插入图片描述

    在这里插入图片描述
    此时有1个commit,2个tree,1个blob。

    head和branch

    分离头指针:变更没有针对branch做,如果需要保存变动,则需要在切换分支时与分支进行挂钩,如果不进行挂钩,在切换到master时,则git可能会将其变动当作垃圾处理掉。
    在这里插入图片描述
    head始终指向一个commit
    在这里插入图片描述

    修改最新的commit的message

    使用命令

    git commit --amend
    
    • 1

    修改老旧的commit的message

    若对老旧的commit的message修改,需要使用其commit的父节点
    在这里插入图片描述
    如图想把add readme file 修改为 add a readme file

    使用命令

    git rebase -i 40d9fe52597856869608b
    
    • 1

    此时出现弹窗
    在这里插入图片描述
    根据界面命令提示,将第一行修改为

    reword 48af12b add  readme file
    或者
    r 48af12b add  readme file
    
    • 1
    • 2
    • 3

    保存并退出,此时出现另一个弹窗,再在这里修改想要修改的内容

    修改后,对于的分支的摘要会有改变。
    在这里插入图片描述

  • 相关阅读:
    阿里云Docker配置镜像加速器
    一次错综离奇的super调用的None参数super() argument 1 must be type, not None
    面试:ANR原因及排查
    【算法题】2899. 上一个遍历的整数
    《网络是怎样连接的》读书笔记
    Redis数据类型——set类型数据介绍及操作
    Koa2基础笔记
    【JVM技术专题】精心准备了一套JVM分析工具的锦囊「JConsole补充篇」
    工程水文学试题库
    大二下个人发展小结
  • 原文地址:https://blog.csdn.net/weixin_44336181/article/details/126249807