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

相关推荐
GISer_Jing6 小时前
Git协作开发:feature分支、拉取最新并合并
大数据·git·elasticsearch
高山莫衣12 小时前
git rebase多次触发冲突
大数据·git·elasticsearch
码农藏经阁12 小时前
工作中常用的Git操作命令(一)
git
kobe_OKOK_12 小时前
【团队开发】git 操作流程
git·elasticsearch·团队开发
码农垦荒笔记12 小时前
Git 安装闭坑指南(仅 Windows 环境)
windows·git
CC码码1 天前
管理你的多个 Git 密钥(多平台多账号)
git·gitlab·github
CC码码1 天前
管理你的多个 Git 密钥(单平台多账号)
git·gitlab·github
大卫小东(Sheldon)1 天前
GIM 1.5发布了! 支持Windows系统了
git·ai·rust
flying jiang1 天前
将大仓库拆分为多个小仓库
git
李boyang10 天前
Git(四):远程操作
git