git 的基本操作

1. git建立本地仓库

在想要建立的目录下输入命令

git init

git 的基本操作_第1张图片

我们可以看一下 .git目录下有什么

git 的基本操作_第2张图片 

2. 配置git本地仓库 

配置用户的 name 和 email

命令:git config [...]

配置完后,我们像查看一下 刚才的配置

2.1 查看配置命令

git config -l

git 的基本操作_第3张图片

2.2 删除配置 

命令:git config --unset [...]

查看配置

git 的基本操作_第4张图片 

配置已经删除了

2.3 全局配置 

解释:在我们的一台服务器上有时候并不是只有一个git仓库,如果我们想要全局配置的话需要加一个选项 --global

git config --global [...]

 查看配置项

git 的基本操作_第5张图片

2.4 删除全局配置 

删除全局配置的话 只有 --unset 是不可以的,需要加上 --global 选项

git 的基本操作_第6张图片 

3. 认识 git 工作区、暂存区、版本库

3.1 我们在gitcode目录下创建一个ReadMe文件,并查看

  1.  其中,ReadMe文件目前并未被git所管理, 因为当前的gitcode目录,并非真的git仓库,二gitcode目录下的隐藏文件 .git目录才是真的 版本库(仓库),但是我们并不可以手动的在 .git目录下修改文件(创建/删除 等...),所以 ReadMe文件就是工作区

git 的基本操作_第7张图片

但是,我们的工作区的文件并不是不可以被管理,我们需要做一些工作,看上图,

    2. 我们图片上的 stage 区域,就是暂存区/索引

3.2 对工作区文件的管理

3.2.1 add 

我们将工作区的的修改(新增、修改、删除),我们通过add,可以将修改的内容添加到暂存区,但是这并不算添加到版本库中

3.2.2 commit

在我们add之后,我们只有进行commit后才会把修改的内容存到版本库中

我们只有做完这两步,我们的git才能管理这个 ReadMe 文件

3.3 如何理解 git管理文件(add操作)

git 的基本操作_第8张图片

其实在我们的版本库中,还有一个objects 对象,我们的objects中存的是一个个的git对象,而我们 每一次add的时候(对工作区的修改的内容),都会存在一个新的git对象中,所以我们维护的这些 git对象,也就是对这些文件进行版本管理

git 的基本操作_第9张图片

我们的stage 中存的是索引,指向objects

 3.4 commit

我们在commit后,就会把暂存区的内容存到master 中,而我们的master中也存的是索引

git 的基本操作_第10张图片

而我们想要拿到我们的master分支,我们只需要拿到 HEAD 指针,就好了 

我们可以对应的看一下 .git目录 和上面的图片

git 的基本操作_第11张图片

但是我们的.git目录里面没有stage,因为 stage里面是暂存区,我们的git仓库是刚创建的,还没有暂存的内容,所以我们的.git目录里面还没有stage

4.  git 添加文件_场景1

我们现在ReadMe文件中写入一些内容

git 的基本操作_第12张图片

然后我们使用add,将 ReadMe文件添加到暂存区

git add [...] :表示指定文件的修改内容添加到暂存区

git add .     :表示将所有的文件的修改内容添加到暂存区

git commit -m "这里面描述修改内容" ,这个-m必不可少,-m后面是本次版本的修改内容

commit 后,会打印日志

5. 查看最近提交 

git log

如果觉得这样太乱的话,可以加 --pretty=oneline 打印一行

 

6. 查看git文件 

我们先看一下我们gitcode目录下的.git目录

git 的基本操作_第13张图片

我们现在看一下,我们的.git/HEAD 

我们看到,我们的HEAD下有一个master

而我们知道,我们最后的内容都会存到master分支里面,我们看一下

 

我们看到我们的master里面是一串上面这样的文本,而我们注意,我们在上面commit后打印的日志里面就有这样内容

而我们的master存的就是索引,我们的索引最终都指向 objects

我们在看一下我们的 .git 目录里面的 objects目录

git 的基本操作_第14张图片

 

我们看前面的这两个,前面的这两位代表文件名,而后面的就代表d7里面的文件名了

如果我们想要查看里面的文件内容,我们的命令是:

git cat-file -p 

git 的基本操作_第15张图片

这里面还有我们第一次提交的信息,我们再看一下我们该信息里面的 tree

 我们继续看一下 

我们看到,又打印出了一条信息,我们继续使用git cat-file -p 查看

git 的基本操作_第16张图片 

我们看到了我们所写入的内容 

 7. git添加文件_场景2

我们先创建1个文件file1 然后 add 

我们又创建一个文件 file2 

然后我们 commit

git 的基本操作_第17张图片

我们原意是将file1 和 file2 都commit ,但是这里只有一个文件被changed 说明只有一个文件被修改,我们的file2没有被提交,因为我们的add是将文件放到暂存区(stage),我们的commit是将暂存区的文件给存到master分支中,我们的file2没有存到暂存区(也就是没有add),所以不可以被commit,如果我们想要将file2也存到master中,我们就继续对file2 进行add ,然后commit

git 的基本操作_第18张图片

8. 修改文件 

实际上 git 追踪的是修改而不是文件

我们先将 hello world 修改为 hello git

git 的基本操作_第19张图片

8.1 查看文件是否被修改 

git status

但是我们的 git status 并不能知道我们修改的内容

8.2 查看文件被修改的内容

git diff [...]

git 的基本操作_第20张图片

git 的基本操作_第21张图片 

上面的图片里面的内容可以看一下代表什么 

8.3 提交修改文件

git add后我们查看 git status

git 的基本操作_第22张图片

我们的这里的提示改变了,显示我们需要将改变commit 

我们可以看一下没有add之前的提示

git 的基本操作_第23张图片

这里显示我们没有暂存区(stage)的内容需要提交

所以我们现在 commit 后继续用 git status 查看

git 的基本操作_第24张图片 

9. git版本回退

版本回退:版本回退就是从当前版本回退到之前的某一个版本

命令:git reset [--soft | --mixed | --hard] [HEAD]

git reset 本质:回退的版本库中的内容

我们的git中是由三个区的分别是

1.工作区

2.暂存区

2.版本库

其中我们的git reset回退的结果是什么,由git reset 后面的三个选项觉得

  • soft:只回退版本库
  • mixed:回退版本库和暂存区,不会回退工作区
  • hard:全部回退
  • 默认:mixed

我们之前的提交

git 的基本操作_第25张图片

那么当我们想要回退到第一次提交,我们使用 hard

 

我们将第一次提交的那一串ID粘贴到后面,然后我们看到打印了一条日志

 

我们现在看到,我们之前提交的 file1 file2已经在工作区都回退了

我们继续查看log

  我们这次的log 只剩下第一次提交的内容了

如果我们后悔了刚才的回退,那么我们怎么样?

我们还是使用 git reset 命令

我们找到刚才回退之前查看的log,找到最后一次提交的ID

我们看一下工作区的文件和log

git 的基本操作_第26张图片 

那么如果我们找不到之前的commit ID 呢?

9.1查看之前提交ID

git reflog

git 的基本操作_第27张图片

git 的基本操作_第28张图片 

我们前面的这一部分也是提交ID,我们同样也可以使用前面的这个ID进行回退

我们先看一下现在的提交信息

我们使用git reset进行回退,这次使用reflog前面的ID

我们回退之后我们在查看一下log

git 的基本操作_第29张图片 

10. 撤销修改 

我们现在已经有一个文本了,我们对已有文本进行修改,有三个场景

git 的基本操作_第30张图片

1.我们只对我们工作区的文本进行的修改

2.我们随工作区的文本进行修改后,还进行的add

3.我们不仅修改了工作区的文本,还add了,最后还commit了

我们的撤销操作对于这三种情况下是不同的

10.1 我们只对工作区进行了修改

git 的基本操作_第31张图片 

 我们想对工作区的文本进行撤销

命令:git checkout -- 

我们看一下ReadMe文档

git 的基本操作_第32张图片 

git checkout -- 表示将工作区恢复到最近一次add/commit的状态

10.2 工作区和暂存区都修改

git 的基本操作_第33张图片

git 的基本操作_第34张图片 

我们要是想回退到之前的状态我们应该怎么做?

命令:git reset           该命令不仅可以回退到之前版本还可以回退到当前版本

gti reset HEAD :HEAD代表回退到当前版本,如果想回退到上一个版本我们还可以在HEAD后面加^, 加一个^代表回退到上一个加两个 ^代表回退到上面两个版本

由于我们的暂存区已经修改,所以我们可以使用 --mixed / --hard, --hard会直接将工作区版本也回退, --mixed只能回退暂存区的,所以把暂存区回退后就是第一种情况了

我们在看一下status

git 的基本操作_第35张图片 

我们的暂存区已经回退了

下面我们在使用第一种情况下的处理方法

 

我们看到这样就回退了

git 的基本操作_第36张图片 

10.3 工作区、暂存区、版本库都修改了

 前提:在我们commit后并没有push操作git 的基本操作_第37张图片

 

 

 

我们的工作区、暂存区、版本库都修改了,所以我们使用 git reset --hard 操作撤销

git 的基本操作_第38张图片 

10.4 总结 

git 的基本操作_第39张图片

 

 11. 删除文件

我们删除掉file1

我们使用 git 提供的 rm 删除操作

我们看一下git rm 的作用

1.删除了工作区的文件

 

 2.删除了暂存区的文件

git 的基本操作_第40张图片

所以我们只需要最后commit就可以了

 

我们最后看一下status

 

我们的工作区以及没有要提交的了

 

git 的基本操作就到这里~

下一次讲 git 分支管理

 

 

 

你可能感兴趣的:(Git,git)