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

目录

[1. 添加文件&add操作和commit操作](#1. 添加文件&add操作和commit操作)

[2. .git树状目录的变化](#2. .git树状目录的变化)

[3. git其他操作](#3. git其他操作)

[4. 修改文件](#4. 修改文件)

[4.1 git status](#4.1 git status)

[4.2 git diff](#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 commit

git 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格式)

相关推荐
GoppViper2 小时前
golang学习笔记29——golang 中如何将 GitHub 最新提交的版本设置为 v1.0.0
笔记·git·后端·学习·golang·github·源代码管理
m0_464832363 小时前
Linux服务器上安装git lfs命令
git
贩卖纯净水.10 小时前
白月光git
git·github
爱吃瓜的猹z14 小时前
git reset 几点疑问
git·源代码管理
悟空201620 小时前
001、Git开发流程规范
git
Li小李同学Li20 小时前
git学习【持续更新中。。。】
git·学习·elasticsearch
晨春计1 天前
【git】
android·linux·git
念幽1 天前
Git常用命令
git
神技圈子1 天前
【git系列】git中的那些迷惑的术语以及概念详解
git
benben0441 天前
Photoshop使用方法大全
git