一、 引言:从零开始构建你的代码时光机
在上一篇中,我们成功在电脑上安装了Git,它就像一台功能强大的"时光机"的引擎。但只有引擎还不够,我们需要为我们的项目建立一个"机库",也就是Git仓库。本篇将带领你踏出Git实战的第一步:创建你的第一个Git仓库,并深入理解Git赖以运作的核心机制------工作区、暂存区和版本库的"三区"协作。掌握这些基础概念,是后续自如运用分支、合并、远程协作等高级功能的基石。
二、 创建你的第一个Git仓库
仓库是Git进行版本控制的基本单位,它是一个被Git跟踪管理的文件目录。所有文件的修改、删除,Git都能在这个仓库内进行跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻进行"还原"。
创建Git仓库的命令是 git init。这个命令会在当前目录下创建一个名为 .git的隐藏子目录,这个目录就是Git的版本库,你所有的版本信息、配置、日志等都存放在这里。
实战演示:
-
准备一个空目录 :首先,我们创建一个名为
gitcode的目录作为我们的工作空间,并进入该目录。# 在home目录下创建gitcode文件夹 root@139-159-150-152:~$ mkdir gitcode # 进入gitcode目录 root@139-159-150-152:~$ cd gitcode # 查看当前所在路径 (Print Working Directory) root@139-159-150-152:~/gitcode$ pwd /home/root/gitcode -
初始化Git仓库 :在当前目录下执行
git init命令。root@139-159-150-152:~/gitcode$ git init Initialized empty Git repository in /home/root/gitcode/.git/这行提示信息告诉我们,一个空的Git仓库已经在
/home/hyb/gitcode/.git/目录下初始化成功了。 -
查看隐藏的.git目录 :使用
ls -a命令查看所有文件(包括隐藏文件)。root@139-159-150-152:~/gitcode$ ll -a total 12 drwxrwxr-x 3 hyb hyb 4096 May 5 15:49 ./ drwxr-xr-x 13 hyb hyb 4096 May 5 15:47 ../ drwxrwxr-x 7 hyb hyb 4096 May 5 15:49 .git/ # 这就是Git的版本库!我们发现,当前目录下多了一个
.git的隐藏目录。
重要警告 :.git目录是Git的"心脏",千万不要手动修改或删除这个目录里的任何文件,否则很可能会破坏整个Git仓库,导致版本历史丢失。
三、 初次使用Git的必备配置
当安装Git后,第一件需要做的事是设置你的用户名称和邮箱地址。这是非常重要的,因为你的每一次提交都会记录这些信息,从而区分不同的提交者。
配置命令是 git config。
-
配置用户信息:
# 设置全局用户名(--global 选项表示对当前用户的所有仓库生效) git config --global user.name "Your Name" # 设置全局邮箱 git config --global user.email "email@example.com"-
请将
"Your Name"替换成你的昵称(如"hyb91")。 -
请将
"email@example.com"替换成你的邮箱(如"2689241679@qq.com")。格式正确即可,不要求是真实存在的邮箱(但推荐使用真实邮箱,尤其后续与Gitee/GitHub关联时)。
--global参数说明:-
如果使用了
--global选项,那么你这台机器上所有的Git仓库都会默认使用这个配置。 -
如果你希望在不同仓库中使用不同的身份(比如公司项目用公司邮箱,个人项目用个人邮箱),可以不要
--global选项,但执行命令时必须在目标仓库的目录下。
-
-
查看当前配置 :使用
git config -l命令可以列出当前的所有Git配置。root@139-159-150-152:~/gitcode$ git config -l user.name=liu user.email=2*********@qq.com # ... 可能会有其他配置项 -
删除配置(如果需要):如果配置错误,可以将其删除。
# 删除全局的用户名配置 git config --global --unset user.name # 删除全局的邮箱配置 git config --global --unset user.email
四、 深刻理解Git的核心:工作区、暂存区、版本库
这是Git学习中最关键、也最需要理解透彻的一部分。很多初学者觉得Git操作难以理解,很大程度上是因为没有理清这三个概念的关系。
让我们通过一个生动的比喻来理解:想象你正在准备一顿丰盛的晚餐。
-
工作区 (Working Directory) :就是你家的整个厨房 。你在这里洗菜、切菜、炒菜。对应到代码,就是你电脑上能看到的项目目录(比如我们的
~/gitcode目录),你在这里新增、修改、删除文件。 -
暂存区 (Stage/Index) :就像厨房里的一个备菜盘 。你把切好的、准备下锅的菜先放到这个盘子里。它是一个中间状态,用于临时存放你的改动。在Git中,暂存区实际上是
.git目录下的一个文件(.git/index)。 -
版本库 (Repository) :就像一本精美的菜谱相册 。当你把一道做好的菜(已经放在备菜盘里的菜)拍照、写上制作心得,然后贴进相册,这道菜的做法就被永久记录下来了。在Git中,版本库就是那个
.git目录,它安全地存储着你所有提交过的版本历史。
它们之间的关系和工作流程,可以用下图清晰地展示:

让我们结合图表和命令来解析整个流程:
-
初始状态 :图中右侧的版本库里,最重要的部分是master分支 (Git默认创建的主分支)和指向它的HEAD指针(可理解为"当前所在位置"的标签)。
-
工作区 -> 暂存区 (
git add):-
当你在工作区(厨房)新建一个
ReadMe.txt文件,或者修改了已有的文件,这些变动Git是知道的,但还处于"散落"状态。 -
执行
git add <file>命令,就像是把切好的菜(你的修改)放入备菜盘(暂存区)。这个操作会更新暂存区的目录树。 -
关键点 :仅仅在工作区创建或修改文件,并不能称之为向仓库中新增了文件。必须通过
git add命令将文件添加到暂存区,Git才开始真正跟踪这些变化。
-
-
暂存区 -> 版本库 (
git commit):-
当你觉得备菜盘里的菜已经准备好了,可以"装盘出品"了,就执行
git commit命令。 -
这个命令会将暂存区的内容(备菜盘里的所有菜)一次性、永久地提交到版本库的当前分支(master分支)中,形成一个快照(拍一张照贴进菜谱相册)。此时,master分支会更新到最新的提交,HEAD指针随着master一起移动。
-
关键点 :可以多次执行
git add添加不同的文件到暂存区,然后只执行一次git commit便可提交所有暂存区的修改。这正是因为git commit是提交暂存区的全部内容。
-
五、 实战:将文件纳入版本控制
现在,让我们把理论付诸实践,完成一次完整的文件添加流程。
场景一:添加新文件到仓库
-
在工作区创建文件 :在
gitcode目录下新建一个ReadMe文件。root@139-159-150-152:~/gitcode$ touch ReadMe # 使用vim或其他编辑器向ReadMe文件写入内容 root@139-159-150-152:~/gitcode$ vim ReadMe # 查看文件内容,例如写入了两行 root@139-159-150-152:~/gitcode$ cat ReadMe hello world hello git -
将文件添加到暂存区 (
git add):# 添加指定文件到暂存区 root@139-159-150-152:~/gitcode$ git add ReadMe # 或者,添加当前目录下所有有变动的文件到暂存区 # git add .-
git add [file1] [file2]...:添加一个或多个指定文件到暂存区。 -
git add [dir]:添加指定目录(包括子目录)到暂存区。 -
git add .:添加当前目录下的所有文件改动到暂存区。这是最常用的方式。
-
-
将暂存区内容提交到版本库 (
git commit):root@139-159-150-152:~/gitcode$ git commit -m "commit my first file" [master (root-commit) c614289] commit my first file 1 file changed, 2 insertions(+) create mode 100644 ReadMe-
-m选项后面跟的字符串"commit my first file"是本次提交的说明信息。这部分内容绝对不能省略,并且要清晰描述本次提交的细节,这是给未来自己或队友看的"日记"。 -
执行成功后,Git会告诉我们:1个文件被改动(新增的ReadMe文件),插入了两行内容。
-
查看提交历史 :使用 git log命令可以查看提交记录。
root@139-159-150-152:~/gitcode$ git log
commit c61428926f3853d4ec6dde904415b0e6c1dabcc6 (HEAD -> master)
Author: ***********
Date: Fri May 5 16:00:00 2023 +0800
commit my first file
这条记录显示了提交的完整ID(一长串SHA-1值)、作者、提交时间和提交信息。
六、 总结
本篇博客我们完成了Git的实战第一步:创建仓库、进行基础配置,并完成了第一次文件提交。我们深入剖析了Git的核心------工作区、暂存区、版本库的"三区"概念及其协作流程,这个模型是理解所有后续Git操作的关键。记住,git add是将改动从工作区放入暂存区,git commit才是将暂存区的改动永久保存到版本库。
在下一篇中,我们将进一步探索Git仓库的奥秘,深入 .git目录内部,看看Git到底是如何存储我们的版本历史的。同时,我们会学习更多关于文件修改、状态查看和差异比较的实用命令。