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.mzph.cn/pingmian/50756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3时间选择器datetimerange在数据库存开始时间和结束时间

♥️作者&#xff1a;小宋1021 &#x1f935;‍♂️个人主页&#xff1a;小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识&#xff0c;和大家一起努力呀&#xff01;&#xff01;&#xff01; &#x1f388;&#x1f388;加油&#xff01; 加油&#xff01…

大数据-49 Redis 缓存问题中 穿透、雪崩、击穿、数据不一致、HotKey、BigKey

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

《GPT-4o mini:开启开发与创新的新纪元》

在科技发展的快速进程中&#xff0c;OpenAI 推出的 GPT-4o mini 模型如同一阵春风&#xff0c;给开发者们带来了新的希望和机遇。它以其卓越的性能和极具吸引力的价格&#xff0c;成为了行业内热议的焦点。 当我首次听闻 GPT-4o mini 的消息时&#xff0c;内心充满了好奇与期待…

详解Mysql InnoDB引擎 04

文章目录 1. InnoDB 简介2. 逻辑存储结构2.1 表空间 idb文件2.2 段2.3 区 1M2.4 页 16KB2.5 行 3. 架构3.1 内存结构3.1.1 Buffer Pool 缓冲池3.1.2 Change Buffer 更改缓冲区3.1.3 Adaptive Hash Index3.1.4 Log Buffer 3.2 磁盘结构 4. 后台线程5. 事务原理5.1 redo log 重做…

运行python项目出现ModuleNotFoundError: No module named ‘sklearn‘问题

问题1&#xff1a;ModuleNotFoundError: No module named sklearn 1.WindowsR键&#xff0c;输入cmd&#xff0c;进入命令行窗口 2.安装sklearn&#xff0c;使用清华镜像安装&#xff1a; python -m pip install scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple …

算法学习day22

一、函数的独占时间 给你一个进程数量&#xff0c;和运行日志。运行日志log的格式为:进程id:(start/end):运行时间 其中一个进程运行时可以被另一个优先级较高的进程抢占cpu。求每个进程独占cpu的时间。 输入&#xff1a;n 2, logs ["0:start:0","1:start:…

Spring Boot - 优雅实现支持通配符和IP段的IP访问黑白名单机制

文章目录 CodeIpAccessInterceptoraddInterceptor工具类配置文件 application.yml单元测试 Code 废话不多说&#xff0c;直接上码 IpAccessInterceptor package cn.cloud.bus.module.servicebus.framework.ipconfig;import cn.cloud.bus.module.servicebus.util.IpFilterUti…

深入理解计算机系统 CSAPP 家庭作业11.10

A: //home.html <form action"/cgi-bin/adder" method"GET"><ul><li><label for"n1">n1:</label><input type"text" id"n1" name"n1" /> //name的值决定页面提交后&#xf…

栈知识梳理和函数实现

参考此文章数据结构——栈&#xff0c;此文章写的更详细&#xff0c;由于我们都是学自于比特课程&#xff0c;这里做个自我备份&#xff0c;方便后续查阅、修改和补充。 栈知识梳理和函数实现 前言1.栈是什么&#xff1f;2.栈的接口实现2.1初始化栈2.2入栈2.3 出栈2.4 获取栈顶…

C语言图书信息管理系统

题目&#xff1a;图书信息管理系统 内容及主要功能描述&#xff1a; 该系统用于管理图书信息&#xff0c;包括图书的增加、删除、查找、修改、浏览、按出版社统计图书数量等功能。具体功能包括&#xff1a; 增加图书&#xff1a;输入图书信息并添加到系统中。删除图书&#x…

【漏洞复现】phpStudy 小皮 Windows面板 存在RCE漏洞

靶场资料后台自行领取【靶场】 image-20240726092307252 PhpStudy小皮面板曝RCE漏洞&#xff0c;本质是存储型XSS引发。攻击者通过登录用户名输入XSS代码&#xff0c;结合后台计划任务功能&#xff0c;实现远程代码执行&#xff0c;严重威胁服务器安全。建议立即更新至安全版…

JAVA SE 类和对象

类和对象 类定义和使用类的定义格式 类的实例化什么是实例化 this 引用this引用的特性 对象的构造及初始化如何初始化对象构造方法概念特性 在这里插入图片描述 **注意**&#xff1a; 封装封装的概念封装扩展之包导入包中的类自定义包包的访问权限控制举例 static成员static修饰…

【计算机网络】TCP协议详解

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 1、引言2、udp和tcp协议的异同3、tcp服务器3.1、接口认识3.2、服务器设计 4、tcp客户端4.1、客户端设计4.2、说明 5、再研Tcp服务端5.1、多进程版5.2、多线程版 5、守护进程化5.1、什么是守护进程5.2…

古籍双层PDF制作教程:保姆级古籍数字化教程

在智慧古籍数字化项目中&#xff0c;很多图书馆要求将古籍导出为双层PDF&#xff0c;并且确保输出双层PDF底层文本与上层图片偏移量控制在1毫米以内。那么本教程带你使用古籍数字化平台&#xff0c;3分钟把一个古籍书籍转化为双侧PDF。 第1步&#xff1a;上传古籍 点批量上传…

云服务器Ubuntu18.04进行Nginx配置

云服务器镜像版本信息&#xff1a;Ubuntu 18.04 server 64bit&#xff0c;本文记录了在改版本镜像上安装Nginx&#xff0c;并介绍了Nginx配置文件目录&#xff0c;便于后面再次有需求时进行复习。 文章目录 Nginx的安装Nginx配置文件分析 Nginx的安装 1.执行下面命令进行安装…

玩转CSS:用ul li +JS 模拟select,避坑浏览器不兼容。

玩转CSS&#xff1a;用ul li JS 模拟select&#xff0c;避坑浏览器不兼容。 在前端的工作中&#xff0c;经常会遇到 selcet控件&#xff0c;但我们用css来写它的样式时候&#xff0c;总是不那么令人满意&#xff0c;各种浏览器不兼容啊有没有&#xff1f; 那么&#xff0c;我…

西电网络空间安全综合953考研分享||西安电子科技大学

一、院校选择 如何选择适合自己的学校以及专业 1. 首先要对自己选择的学校有热情&#xff0c;选择自己最想去的学校 2. 其次选择在自己能力范围内努力能考上的学校&#xff0c;综合考虑地区&#xff08;不同地区公共课分数有一定的差别&#xff09;、学校&#xff08;建议跨…

Vue3计算属性终极实战:可媲美Element Plus Tree组件研发之节点勾选

前面完成了JuanTree组件的节点编辑和保存功能后&#xff0c;我们把精力放到节点勾选功能实现上来。**注意&#xff0c;对于组件的开发者来说&#xff0c;要充分考虑用户的使用场景&#xff0c;组件提供的多个特性同时启用时必须要工作良好。**就拿Tree组件来说&#xff0c;用户…

如何保证前后端交互信息不被篡改。

先说说前后端有哪些认证方式来保证&#xff1a; 基于 session 的认证方式&#xff1a;前端在用户登录成功后&#xff0c;后端会在服务器端生成一个唯一的 session ID&#xff0c;并将该 session ID 返回给前端&#xff0c;在后续的请求中&#xff0c;前端需要带上该 session ID…

【CUDA Runtime】第一个“Hello World“程序

文章目录 前言前提须知CUDA Runtime 简介核心功能优势和应用 使用CudaRuntime进行第一个"Hello world"程序创建CudaRuntime工程选择GPU函数原型参数返回值作用 获取支持Cuda的GPU信息获取支持Cuda的GPU数量获取设备属性运行展示 在GPU上分配内存把需要运行的主机内存…