IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Git学习之路 -> 正文阅读

[开发工具]Git学习之路

Git学习之路

安装

  • Windows上安装
  • Mac上安装

[mac安装包](Git - Downloading Package (git-scm.com))

  • 查看是否安装成功
git --version

配置

  • /etc/gitconfig文件:系统中对所有用户都普遍适用的配置,若使用git config时用–system选项,读写的就是这个文件
  • ~/.gitconfig文件:用户目录下的配置文件只适用于该用户,若使用git config时用–global选项,读写的就是这个文件
  • .git/config文件:当前项目的Git目录中的配置文件(也就是工作目录中的.git/config文件)这里的配置仅仅针对当前项目有效

配置用户信息

git config --global user.name '用户名'
git config --global user.email 邮箱地址

git config --list//查看已有配置信息

区域

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)
  • 版本区:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

对象

  • Git对象
  • 树对象
  • 提交对象

Git底层命令

1.Linux基本命令

  • clear:清楚屏幕
  • echo ‘信息’:往控制台输出信息…
  • echo ‘内容’>文件名.txt:创建文件并填写内容…
  • ll:将当前目录下的子文件&子目录平铺在控制台
  • find 目录名:将对应目录下的子孙文件&子孙目录平铺在控制台
  • find 目录名 -type f :将对应目录下的文件平铺在控制台
  • rm 文件名:删除文件
  • mv 源文件 重命名文件:重命名
  • cat 文件的url:查看对应文件的内容
  • vim 文件的url
    • 按i进入插入模式 进行文件编辑
    • 按esc键&按:键进行命令的执行
      • ? q! 强制退出(不保存)
      • ? wq 保存退出
      • ? set nu 设置行号

2.初始化新仓库

git init//初始化仓库
git clone// 拷贝一份远程仓库,也就是下载一个项目。

3.git目录

  • hooks 目录包含客户端或者服务端的钩子脚本;
  • info 包含一个全局性排除文件
  • logs 保存日志信息
  • objects 目录存储所有数据内容;
  • refs 目录存储指向数据(分支的提交对象的指针)
  • config 文件包含项目特有的配置选项
  • description 用来显示对仓库的描述信息
  • HEAD 文件指示目前被检出的分支
  • index 文件保存暂存区信息

4.git对象

Git的核心是一个简单的键值对数据库.你可以向该数据库插入任意类型的内容,它会返回一个键值,通过该键值可以在任意时刻再次检索该内容

  • 向数据库写入内容 并返回对应键值

    • 命令:

      echo 'test content' | git hash-object -w --stdin
      
      • -w选项指示 hash-object 命令存储数据对象;若不指定此选项,则该命令仅返回对应的键值

      • –stdin(standard input)选项则指示该命令从标准输入读取内容;若不指定的话,则须在命令尾部给出待存储文件的路径

      • git hash-object -w 文件路径 //存文件
        
      • git hash-object 文件路径 //返回对应文件的键值
        

        该命令输出一个长度为40个字符的校验和° 这是一个SHA-1哈希值

  • 查看Git是如何存储数据

    • 命令:

      find .git/objects -type f
      
      • 返回:

      • .git/objects/d6/…

        这就是开始时Git存储内容的方式:一个文件对应一条内容°校验和的前两字符

  • 根据键值拉取数据

    • 命令:

      git cat-file -p 键值.......
      //-p选项可指令该命令自动判断内容的类型,并为我们显示格式友好的内容
      
      • 返回对应文件的内容

5.对一个文件进行简单版本控制(流程)

  • 创建一个新文件并将其内容存入数据库

    echo '内容' > test.txt
    git hash-object -w test.txt
    
    

    返回一个键值…例如(asdk1321askndksjad)

  • 向文件里边写入新内容,并再次将其存入数据库

    echo '内容2' > test.txt
    git hash-object -w test.txt
    
    

    返回一个新键值…例如(12fasfas12edsa)

  • 查看数据库内容

    find .git/objects -type f
    git cat-file -p asdk1321askndksjad
    git cat-file -p 12fasfas12edsa
    
    git cat-file -t 12fasfas12edsa
    //利用cat-file-t命令可以让Git告诉我们其内部存储的任何对象类型
    
    

    返回:blob

  • 缺点

    • 难以记住每个版本对应的SHA-1值
    • 在Git中文件名并没有被保存-仅保存了文件内容
    • 解决方案(树对象)
  • 注意

    • 当前操作都是在对本地数据库进行操作,不涉及暂存区

6.树对象

我们可以通过update-index;write-tree;read-tree等命令来构建树对象并塞入暂存区

  • 1、利用update-index命令为test.txt文件首个版本创建一个暂存区,并通过write-tree命令生成树对象

    git update-index --add --cacheinfo 100644\92139012asdads(键值)test.txt
    git write-tree
    
    

    文件模式:

    • 100644表明是一个普通文件
    • 100755表明是一个可执行文件
    • 120000表示一个符号链接

    –add选项:因为此前该文件不在暂存区,首次需要–add --cacheinfo选项:

    ? 因为添加的文件位于git数据库中,而不是当前目录下所以需要–cacheinfo

  • 2、新增new.txt 将new.txt和test.txt文件的第二个版本塞入暂存区,并通过write-tree生成树对象

    echo 'newfile' > new.txt
    git update-index --cacheinfo 100644\isa21399sadasfo(键值) test.txt
    git update-index --add new.txt
    git write-tree
    
    
  • 3、将第一个树对象加入第二个树对象中,使其成为新的树对象

    git read-tree
    	--prefix=bak dasd09123sad12(键值)
    git write-tree
    
    

    read-tree表明可以把树对象读入暂存区

  • 树对象相关操作

    • 查看暂存区当前的样子

      git ls-files -s
      
      
    • 查看树对象

      git cat-file -p master^{tree}(或者是树对象的hash)
      //master^{tree}表示master分支上最新的提交所指向的树对象
      
      
    • 返回

      100644 blob 123aSdaasdakwqdai README

      100644 blob 213asdilas123sdalda Rakefile

      040000 tree 123sakduli2sadljndsa lib

      以上hash都是随便写的,总之会与上方的hash值一致

7.提交对象

我们可以通过调用commit-tree命令创建一个提交对象,为此需要指定一个树对象的SHA-1值,以及该提交的父提交对象(如果有的话,第一次将暂存区做快照就没有父对象)

  • 创建提交对象

    echo 'first commit' | git commit-tree d8329f
    
    

    返回: fdsadf3afdsakfasu123usaku12(乱写的…真实的自己测)

  • 查看提交对象

    git cat-file -p fdf4fc3
    
    

Git高层命令

CRUD

命令作用
git init初始化仓库
git status查看文件的状态
git diff查看哪些修改还没有暂存
git diff --staged查看哪些修改以及被暂存了还没提交
git log --oneline查看提交的历史记录
git add ./将修改添加到暂存区
git rm 文件名删除工作目录中对应的文件再将修改添加到暂存区
git mv 原文件名 新文件名将工作目录中的文件进行重命名,再将修改添加到暂存区
git commit -a -m 注释将暂存区提交到版本库

分支

命令名作用
git branch显示分支列表
git branch 分支名创建分支
git checkout 分支名切换分支
git branch -D 分支名强制删除分支
git branch -d 分支名删除空的分支,删除已经被合并的分支

Git存储

git stash命令
	会将未完成订单修改保存到一个栈上,你可以在任何时候重新应用这些改动(git stash apply)

命令名作用
git stash list查看存储
git satsh apply stash@{2}如果不指定一个储藏,Git认为指定的是最近的储藏
git stash drop加上将要移除的储藏的名字来移除它
git stash popl来应用储藏然后立即从栈上扔掉它

撤销&&重置

  • 撤销

    • git commit -amend
      
      

      作用:

      这个命令会将暂存区中的文件提交

      如果你提交后发现忘记暂存某些需要的修改,可以向下面这样操作

      git commit -m 'initial commit'
      git add forgotten_file
      git commit amend
      //最终你只会有一个提交-第二次提交将代替第一次提交的结果
      
      
    • git reset
      
      

      命令:git reset HEAD 文件名

      作用:将文件从暂存区中撤回到工作目录

    • git checkout
      
      

      命令:git checkout --文件名

      作用:将在工作目录中对文件的修改撤销

      注意:想清楚了不要那个文件再使用该命令

  • 重置

    • 三部曲:

      • 第一部:

        git reset --soft HEAD~ (--amend)
        //只动HEAD(带着分支一起移动)
        
        
      • 第二部:

        git reset [--mixed] HEAD~
        //动HEAD	(带着分支一起移动)动了暂存区
        
        
      • 第三部:

        git reset --hard HEAD~
        //动HEAD(带着分支一起移动)动了暂存区、工作目录
        
        

Git相关教程可参考

[Git 教程 | 菜鸟教程 (runoob.com)](Git 教程 | 菜鸟教程 (runoob.com))

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 23:24:56  更:2022-04-06 23:25:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 15:13:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码