当前位置: 首页 > news >正文

git 学习总结

文章目录

  • 一、 git 基础操作
    • 1、工作区
    • 2、暂存区
    • 3、本地仓库
    • 4、远程仓库
  • 二、git 的本质
  • 三、分支
  • git 命令总结

作者: baron

一、 git 基础操作

    如图所示 git 总共有几个区域 工作区, 暂存区, 本地仓库, 远程仓库.
在这里插入图片描述

1、工作区

存放项目代码的地方,他有两种状态 Unmodifymodify. ** Unmodify ** 表示当前的文件快照内容与本地仓库文件夹中完全一致. 没有任何修改

在这里插入图片描述

Unmodify 经过修改(modify)或者新增(add)文件, 就会变成 modify 状态.

在这里插入图片描述

modify 状态可以通过 git checkout恢复到Unmodify状态. 使用 git checkout README.md恢复这个文件的修改. 注意这个操作是不可逆的

在这里插入图片描述

modify 状态, 通过 git add添加到 暂存区, 使用 git add test.c添加 test.c 到暂存区

在这里插入图片描述

2、暂存区

暂存区是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中, 有时候也被称作“索引”. 通俗的将就是临时存放你的改动. 暂存区的文件通过 git reset将修改恢复到工作区的modify 状态.

在这里插入图片描述

暂存区的文件通过 git commit将修改同步到本地仓库

在这里插入图片描述

3、本地仓库

本地仓库, 存放所有的远程分支的代码, 用来和远程仓库进行交互, HEAD 指向当前所在的分支.本地仓库的代码通过 git push同步仓库到远程仓库.

在这里插入图片描述

本地仓库, 通过 git reset --soft回退到暂存区

在这里插入图片描述

4、远程仓库

远程仓库, 是指托管在因特网或其他网络中的你的项目的版本库. 通过 git fetch获取到远程代码.

在这里插入图片描述

拉到的代码通过 git merge合并到本地分支.

在这里插入图片描述

其中 git pull= git fetch+ git merge

二、git 的本质

    git 的本质就是一个文件状态记录工具, 用来记录当前目录及其子目录的状态.. 树状结构主要由提交(commits)目录树(trees)、和 文件(blobs)组成. 他们统一由哈希值进行描述. 一个由 40 个十六进制字符(0-9 和 a-f)组成的字符串.如下所示

在这里插入图片描述

    commit 用来描述根目录的状态, 也就是某个时间节点的整体的文件状态. 它包含、根目录信息(tree)父提交(parent)提交 id(author)提交信息(committer).

在这里插入图片描述

     树(trees) 表示目录, 通过 tree 形成树状结构连接所有的目录, 最后文件由 blobs 描述. 可以通过命令 git cat-file -p命令用来查看 git 中的对象的内容和结构. 从而跟踪整颗树的状态.

在这里插入图片描述

    commit 就是当前目录树的一种快照. 即拍下当前目录树的状态.

三、分支

    每一个 commit 就是一个文件快照, 分支就是一组 git commit 的结合, 可以通过命令 git log --oneline --decorate --graph --all 显示所有分支的提交历史. 第一次创建的分支默认为树根, 也就是第一个 commit. 以后的分支都在这分支的个基础上分叉.

在这里插入图片描述

    如图所示该仓库有两个分支分别为 maintest 分支. test 分支起始于 main 分支. 在 add a这个 commit 创建出 test 分支. 展开来就如下所示.

在这里插入图片描述

add b这个 commit 通过 git branch test创建出 test 分支, 使用 git checkout test切换到 test 分支. HEAD 是一个指针,指向当前活动的分支的最新提交(即“当前分支”). 它告诉 Git 当前工作目录和暂存区(index)是基于哪个分支的。如图所示 当前 HEAD 指向 test 分支的.

git 命令总结

命令含义
git init创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件
git add将新增的文件(add)或者修改(modify)提交到暂存区
git commit -m 暂存区的文件提交到本地仓库
git push本地仓库的文件提交到远程仓库
git pull/git fetch/merge远程仓库的文件同步到本地仓库
git reset --soft将 commit 的修改回退到暂存区
git reset暂存区的内容回退到工作区的 modify/add 状态
git checkout回退工作区的修改(modify)或者新增(add)的文件, 这一步是不可逆
git status令查看哪些文件处于什么状态
git diff比较的是工作目录中当前文件和暂存区域快照之间的差异
git log查看历史提交
git log --stat 列出所有被修改过的文件、有多少文件被修改了以及被修改过的文件的哪些行被移除或是添加了
git log --pretty=format:"%h - %an, %ar : %s"列出姓名, 修改时间, 和第一条 commit
git log --pretty=format:"%h - %an, %ar : %s --since=2.weeks列出两周之前的提交
git log --pretty=format:"%h - %an, %ar : %s --after=2.weeks列出两周之后的提交
git commit --amend将暂存区中的文件提交, 并且合并覆盖上次提交
git cat-file -p命令用来查看 git 中的对象的内容和结构
git log --oneline --decorate --graph --all显示所有分支的提交历史
git remote -v列出远程仓库以及分支
git remote add <shortname> <url>添加一个远程仓库
git remote show某一个远程仓库的更多信息
git remote rename远程仓库重命名
git remote rm删除远程仓库
git branch -a打印出所有的远程分支
git branch创建新分支
git branch -b创建并切换到新分支
git checkout出了回退文件修改的功能, 后面跟分支名还能切换分支
http://www.lryc.cn/news/408339.html

相关文章:

  • 《如何找到自己想做的事》
  • Vue中el的两种写法
  • ELK安装(Elasticsearch+Logstash+Kibana+Filebeat)
  • VScode使用Github Copilot插件时出现read ECONNREST问题的解决方法
  • 充电桩浪涌保护方案—保障充电设施安全稳定运行的关键
  • Python包管理工具pip
  • 最全国内13家DNS分享 解决网页被恶意跳转或无法打开问题
  • 最新站长工具箱源码,拥有几百个功能,安装教程
  • 【算法/训练】:动态规划(线性DP)
  • 计算巨头 Azure、AWS 和 GCP 的比较
  • Thinkphp5跨域问题常见的处理方法
  • Matlab编程资源库(9)数据插值与曲线拟合
  • matplotlib的科研绘图辅助
  • C++内存管理(候捷)第五讲 笔记
  • 谷粒商城实战笔记-63-商品服务-API-品牌管理-OSS获取服务端签名
  • 详细介绍BIO、NIO、IO多路复用(select、poll、epoll)
  • 昇思25天学习打卡营第11天|xiaoyushao
  • 为什么样本方差(sample variance)的分母是 n-1?
  • 编解码器架构
  • 追问试面试系列:JVM运行时数据区
  • React Native在移动端落地实践
  • 《操作系统》(学习笔记)(王道)
  • LabVIEW学习-LabVIEW处理带分隔符的字符串从而获取数据
  • freesql简单使用操作mysql数据库
  • 使用Java和Spring Retry实现重试机制
  • Linux Vim教程(十):自定义配置与插件管理
  • 代理协议解析:如何根据需求选择HTTP、HTTPS或SOCKS5?
  • Verilog语言和C语言的本质区别是什么?
  • Delphi5实现鱼C屏幕保护程序
  • 【计算机毕业设计】844学籍管理系统