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

【Git基本操作】添加文件 | 修改文件 | 及其各场景下.git目录树的变化

目录

1. 添加文件&add操作和commit操作

2. .git树状目录的变化

3. git其他操作 

4. 修改文件

4.1 git status 

4.2 git diff


1. 添加文件&add操作和commit操作

  • add操作:将工作区中所有文件的修改内容 添加进版本库的暂存区中。
  • commit操作:将暂存区的内容 提交到master分支下。此步完成之后,才能真正意义上说将修改的内容放到版本库中(本地仓库)。
  • add对应命令:git add命令
  • commit对应命令:git commit命令

add操作

  • 写法1:git add 文件的名称(当然后面也可以跟上多个文件)
  • 写法2:git add . (当前目录下所有内容的修改全部添加到暂存区)

commit操作

  • git commit -m " " (引号里是本次提交的细节,尽量详细的描述,请描述直接语言,不可修改的)(git 版本控制器 管理文件的版本 就是依据版本提交的细节)
  • 回车之后,就可以看到你提交成功的信息。
  • 第一行是提交的细节或备注。
  • 第二行是有几个文件改变,改变的内容是什么。(此例子是有4个文件改变,改变的内容是1行)
git add
git commitgit add ReadMe//文件名,后面可以跟多个文件名
git add . //当前目录下所有文件修改的内容全部添加到暂存区git commit -m " "

 

2. .git树状目录的变化

  • add操作之后,index暂存区新增内容的git对象的索引。
  • add操作同时在对象区创建了git对象,内容在这里面。
  • head指针指向master
  • commit操作之后,master新增了对象库中对象的索引。
  • master里面存放的就是最新一次提交commit id
  • commit id分为两个部分:
  1. 前两位是文件夹的名称
  2. 剩下是后面是标识
  • mastet——>最新一次提交记录的commit id——>保存的最近一次提交记录(里面有提交文件修改内容的commit id)——>保存的是提交文件(每个提交的文件都有单独的commit id)——> commit id保存的是修改的内容。

【head指针指向master】cat .git/HEAD

【未操作前】 

【操作之后】 


cat .git/refs/heads/master 
//master的内容,里面存放的是最新一次提交的commit id

git cat-file -p  跟commit id //查看maseter索引commit id的内容

【只提交了一次所以只有一次提交记录】 

【tree后面也是一个对象,对象里面存放的是最新一次提交的commit id】

【此例子我们提交了两次,所以有parent: 上次提交内容parent的commit id】

git cat-file -p 0de78ceec6ac9cf0502e67fc7d7dced363a7ada5//commit id是提交记录中tree后面对象的索引

git cat-file -p ce09bf3ad4f74a39462ae54d7a75272977303c05 //查改对应文件commit id中保存的修改的内容

 

3. git其他操作 

git log 

  • git log :可以帮助我们打印时间从近到远的提交记录。
  • 每次提交都会有一个commit id(通过哈希计算出来的一个数字,不是递增的数字。十六进制表示。)

  • 这个id可以定位到我们每次的提交的文件内容。定位到是谁提交和提交时间以及提交的详细信息。

  • 下面例子:清晰的知道commit id和配置的姓名和邮箱。

 git log --pretty=oneline

  • git log --pretty=oneline:简化上面的内容(打印一行漂亮的日志)

4. 修改文件

前提:对工作区的文件的修改包括以下几个方面:

  1. 新增一个文件
  2. 删除一个文件
  3. 修改一个文件内容(增删改)

重点❗:Git版本控制器并不是追踪管理文件本身,而是文件的修改。对象库中的一个git对象,里面存储其实是工作区修改的内容。Git管理的是修改的内容而不是一整个的文件。

注意❗:每次修改工作区的文件之后,提交之后,需要用git的指令查看本地仓库的状态和修改的具体内容。

4.1 git status 

查看当前仓库的状态:git status

  • 用于查看上一次提交 截至到现在 是否对哪些文件做出修改,注意只是哪些文件变化了/修改了,不能查看修改的内容。
  • Changes not staged for commit 没有将要提交的文件修改内容 到暂存区内容(工作区存在修改过的文件 没有提交到暂存区中了)
  • 修改的是在工作区:modified:ReadMe修改的内容在。

【add未提交到暂存区前】 

【add提交到暂存区】  【commit 未提交到本地仓库前】 

【commit提交到本地仓库】

4.2 git diff

显示暂存区和工作区之间差异的文件内容的git diff   需要查看某个修改文件的具体内容的文件名。(显示的是diff格式)

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SpringBoot实战:处理全局异常
  • Apache Spark详解
  • CSS学习碎碎念之卡片展示
  • 《昇思25天学习打卡营第20天|onereal》
  • 计算机视觉之Vision Transformer图像分类
  • 无法解析主机:mirrorlist.centos.org Centos 7
  • 车载视频监控管理方案:无人驾驶出租车安全出行的保障
  • UniVue@v1.4.0版本发布:运行时调试器RuntimeDebuger
  • 交换机和路由器的工作流程
  • 百度智能云将大模型引入网络故障定位的智能运维实践
  • Leetcode3200. 三角形的最大高度
  • T113-i系统启动速度优化方案
  • R语言数据分析案例42-结婚意愿问卷数据统计分析
  • 2024 Q1:AVP时代下全球XR头显市场动态与展望
  • (算法)硬币问题
  • Android单元测试 - 几个重要问题
  • AngularJS指令开发(1)——参数详解
  • Java超时控制的实现
  • js中forEach回调同异步问题
  • mysql外键的使用
  • npx命令介绍
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Vue--数据传输
  • webgl (原生)基础入门指南【一】
  • 从tcpdump抓包看TCP/IP协议
  • 大数据与云计算学习:数据分析(二)
  • 高程读书笔记 第六章 面向对象程序设计
  • 高性能JavaScript阅读简记(三)
  • 如何优雅地使用 Sublime Text
  • 以太坊客户端Geth命令参数详解
  • 【干货分享】dos命令大全
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • (1)SpringCloud 整合Python
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (Git) gitignore基础使用
  • (void) (_x == _y)的作用
  • (备忘)Java Map 遍历
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (转)ABI是什么
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)h264中avc和flv数据的解析
  • ... 是什么 ?... 有什么用处?
  • .axf 转化 .bin文件 的方法
  • .NET MVC 验证码
  • .Net OpenCVSharp生成灰度图和二值图
  • .NET 通过系统影子账户实现权限维持
  • .net6 当连接用户的shell断掉后,dotnet会自动关闭,达不到长期运行的效果。.NET 进程守护
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .pyc文件是什么?
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林