当前位置: 首页 > 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出了回退文件修改的功能, 后面跟分支名还能切换分支

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • pytest结合allure-pytest插件生成测试报告
  • vue3项目报错集合
  • go语言map底层及扩容机制原理详解(下)
  • Cocos Creator 小游戏案例
  • flask 开始
  • Docker(十)-Docker运行elasticsearch7.4.2容器实例以及分词器相关的配置
  • linux系统iptable防火墙开放指定ip及端口
  • 香橙派orangepi系统没有apt,也没有apt-get,也没有yum命令,找不到apt、apt-get、yum的Linux系统
  • CNCKAD激光切割软件
  • 【Ant Design Pro】快速上手
  • JavaWeb学习——请求响应、分层解耦
  • 昇思25天学习打卡营第22天|CycleGAN图像风格迁移互换
  • 代码随想录 day 25 回溯
  • Docker 制作java8镜像
  • 橙单前端项目下载编译遇到的问题与解决
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 分享一款快速APP功能测试工具
  • 2017-09-12 前端日报
  • JavaScript类型识别
  • JAVA之继承和多态
  • Mysql数据库的条件查询语句
  • npx命令介绍
  • October CMS - 快速入门 9 Images And Galleries
  • redis学习笔记(三):列表、集合、有序集合
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • 官方解决所有 npm 全局安装权限问题
  • 聚簇索引和非聚簇索引
  • 利用jquery编写加法运算验证码
  • 前嗅ForeSpider中数据浏览界面介绍
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 微信支付JSAPI,实测!终极方案
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​Python 3 新特性:类型注解
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #162 (Div. 2)
  • #laravel 通过手动安装依赖PHPExcel#
  • $NOIp2018$劝退记
  • (4)STL算法之比较
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (三)uboot源码分析
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)http-server应用
  • (转)编辑寄语:因为爱心,所以美丽
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .bat文件调用java类的main方法
  • .NET C# 使用GDAL读取FileGDB要素类
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .Net Core 微服务之Consul(二)-集群搭建
  • .NET Micro Framework初体验
  • .net 受管制代码