目录
[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分为两个部分:
- 前两位是文件夹的名称
- 剩下是后面是标识
- 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. 修改文件
前提:对工作区的文件的修改包括以下几个方面:
- 新增一个文件
- 删除一个文件
- 修改一个文件内容(增删改)
****重点❗: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格式)