# Git教程 - 2 git基本使用
# 2.1 配置
在使用 git 之前,需要先对 git 进行一下配置,主要是配置 name
和 email
。
因为代码是很多人编写的,每个人得有个标识,所以 name
和 email
主要是用户标识。
打开命令行,执行如下操作:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@xxx.com"
2
例如我输入我的:
这样就配置好了,如果要查看已经配置的 name 和 email,则使用如下指令:
git config user.name # 查看配置的用户名
git config user.email # 查看配置的邮箱
2
# 2.2 初始化仓库
我们先在电脑上新建一个目录,我这里叫 hello-git
,以这个文件夹来模拟实际开发中的项目,通过对文件夹中的文件的修改进行追踪,来实现版本管理。
新建 hello-git
文件夹,此时文件夹还只是一个普通的文件夹,还不受 git 管理,我们需要对仓库进行初始化,这样 hello-git
才受 git 管理,文件夹才成为 git 的一个仓库了。
我们在命令行进入到文件夹下,输入以下命令:
git status
可以查看 git 的状态:
可以看到项目还不是一个 git 仓库。
然后输入如下指令:
git init
可以看到初始化了一个空的 git 仓库。
此时在电脑上如果显示影藏的文件,会看到当前项目目录下会多了一个 .git
的隐藏文件夹。
此时再使用 git status
查看项目的状态,仓库是已经初始化了。
此时显示没有什么东西要提交。
一般在实际的开发中,如果不是新建项目,一般不会用到 git init
命令来初始化项目,因为项目是别人建好了,代码保存在云端仓库,我们使用后面的 git clone
指令来将项目的代码下载到自己的电脑,已经不用初始化了。
# 2.3 基础操作
在讲解操作之前,先介绍一个 git 中几个核心概念。
git 中有三个区:工作空间、暂存区、仓库。
- 工作空间:就是正在编辑和修改文件的地方,一般就是项目根目录;
- 暂存区:暂存更改的地方,文件修改后,需要先暂存才能提交到仓库;
- 仓库:文件暂存后,可以提交代码到仓库。
git 中文件有两种状态:未跟踪 、 已跟踪。
未跟踪 是指我们刚新建了一个文件,还没有被 git 所管理。
已跟踪 是指文件已经被 git 管理了。
已跟踪的文件又有三种状态:未修改、已修改、暂存。
未修改 是指工作空间中的文件和 git 仓库中的文件相同,没有被修改;
已修改 是指工作空间中的文件已被修改,和 git 仓库中的文件不同;
暂存 是指文件修改了,已经被保存到暂存区,暂时没有提交到仓库。
注意,上面工作空间和 git 仓库,但是都是在自己的电脑上,仓库也是本地的,没有涉及到云端仓库。
# 1 暂存 git add
现在在项目文件夹 hello-git 下新建一个 1.txt
,并输入以下内容:
第一次添加的内容
然后在命令行查看仓库的状态:
可以看到 1.txt
的状态是 Untracked
(未跟踪),所以刚刚添加到项目的文件处于未跟踪状态。
此时执行如下指令,将 1.txt
切换为暂存状态(已跟踪中的状态)。
git add 1.txt
然后再查看仓库的状态:
可以看到 1.txt
文件是 Changes to be commited
,表示是 暂存的状态 。
此时 1.txt
已经被 git 管理了。
# 2 提交 git commit
现在 1.txt
是暂存的状态,还未被提交到仓库。
下面我们可以使用如下指令,将仓库中暂存状态的文件提交到仓库:
git commit -m "第一次提交"
-m
后面的参数是提交日志,记录这一次提交的内容,以后好根据这个内容判断修改了什么内容。
代码提交后,此时再次查看工作空间的状态,会发现工作空间没有东西要提交,工作树是干净的(工作书我们后面再讲)。
上面我们完成了一个完整的流程:添加文件 --> 暂存文件 --> 将文件提交到仓库。
好了,我们再重新走一遍流程-------------------------------------------------------------------
现在我们重新编辑 1.txt
,内容变为如下:
第一次添加的内容
第二次添加的内容
2
保存文件,然后 git stauts
查看工作区的状态:
可以看到 1.txt
的状态变为了 已修改 。
那么如何将 1.txt
再次提交到仓库,让它的状态变为 未修改 呢?
需要再次将 1.txt
暂存,然后再次提交到仓库。
也就是说每一次都需要经历 添加/修改文件 --> 暂存文件 --> 提交文件 这三个步骤。
好了,我们重新按照上面三个步骤将 1.txt
提交到仓库:
文件提交到仓库后,工作区的文件就和仓库的文件一致了,所以就变成未修改了。
不要觉得麻烦,实际开发中,不可能修改一行代码提交一次,一般完成一个功能,或每天提交,所以没那么频繁。
# 3 批量暂存
我们重新在项目下添加 2.txt
和 3.txt
重新查看工作区的状态:
可以看到有两个未追踪的文件。
如果每次使用 git add 来一个一个添加文件,那确实很麻烦,我们可以使用如下命令批量将文件添加到暂存。
git add . # 将当前目录所有已修改或未跟踪的文件加入到暂存
git add * # 将工作区所有已修改或未跟踪的文件加入到暂存
2
执行 add,然后 commit,工作区的状态又变成了未修改。
# 4 暂存和提交
你可能觉得每次都需要先 add 再 commit 有点麻烦,其实还可以使用一个指令来完成添加和提交。
我们再次修改 1.txt
、 2.txt
和 3.txt
。
此时查看工作区的状态,发现有三个文件已修改,
通过上面命令行也可以看到一个提示 git commit -a
命令,
所以我们可以使用如下命令:将工作区所有已修改的文件提交到仓库(注意:未跟踪的文件不会提交)。
git commit -a -m "第四次提交"
此时工作区的状态又变成未修改了。
# 6 撤销修改 git restore
如果在工作区修改了文件,还没有提交,现在修改的内容不想要了,可以将文件恢复到最近一次提交时的状态。所以git restore
主要是在工作区和暂存区之间进行撤销操作。
如果修改了文件,还没有提交到暂存区,则可以使用如下指令撤销工作空间文件的修改:
git restore 文件 # 撤销单个文件修改
git restore . # 撤销当前目录修改
git restore * # 撤销整个项目修改
2
3
举个例子:
cat 命令是查看当前文件内容。
git restore
命令使工作空间(不是暂存区)的文件撤销更改,如果文件已经提交到暂存区了,则可以使用下面的指令将暂存区的文件撤回到工作区,并保留暂存前的内容。
git restore --staged 文件 # 撤销单个文件暂存
git restore --staged . # 撤销当前目录暂存
git restore --staged * # 撤销整个项目文件暂存
2
3
举个例子:
所以 git restore
是无法将添加到暂存区的文件恢复到未修改状态的。
# 7 删除 git rm
比方说我们的仓库有一个 1.txt,现在我们想从仓库删除这个文件,怎么操作呢。
首先在硬盘上将这个文件从工作区中删除(也就是从硬盘删除),然后查看一下工作区的状态:
可以看到上面有一个文件删除了,然后我们就可以将 1.txt 加入到暂存区,然后 commit 提交就删除了。
上面的操作是一种方式。
还有一种方式是使用如下指令:
git rm 文件 # 将文件删除,并提交到暂存
上面的指令是直接将文件删除,并提交到暂存,然后可以直接提交。
举个例子:
从上面的操作可以看出,git rm
命令相当于删除文件并暂存。
需要注意,如果文件已经被修改了,是已修改的状态,那么是无法使用 git rm
来删除文件的,需要使用如下命令:
git rm -f 文件
这也是为了防止将修改的内容误删除。
如果是删除文件夹还需要添加 -r 表示递归删除:
git rm -r 文件夹 # 递归删除文件夹中的内容
git rm -rf 文件夹 # 如果文件夹中有内容被修改,还需要-rf强制递归删除
2
# 8 查看提交日志 git log
此时我们可以使用如下命令查看提交的日志:
git log
例如我提交了4次,可以看到每一次的提交记录:
li@192 hello-git % git log
commit f4050cc3324b185b9b918480ab78fd89e892bfdd (HEAD -> master)
Author: Doubi <doubibiji@qq.com>
Date: Sun Dec 10 17:07:00 2023 +0800
第四次提交
commit 051fe2291402ced19d3d6c27002dd805965a5857 # 这个相当于ID
Author: Doubi <doubibiji@qq.com> # 提交人
Date: Sun Dec 10 17:06:09 2023 +0800 # 提交时间
第三次提交
commit 4e3d9108b6ba26539606b5f32f3a0532d8183c3b
Author: Doubi <doubibiji@qq.com>
Date: Sun Dec 10 17:05:42 2023 +0800
第二次提交
commit ae4ed34824a1996c6b937e3040fd4795f4d98b49
Author: Doubi <doubibiji@qq.com>
Date: Sun Dec 10 17:05:04 2023 +0800
第一次提交
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
还可以使用如下指令查看历史变动和引用日志:
git log -g
# 或者使用
git reflog show
2
3