简介
在本实验中,你将使用 Git 开始学习版本控制。你将学习如何把普通目录转换为 Git 仓库,从而持续跟踪文件的变化。
从这一刻起,普通文件夹就变成了一个受版本控制的项目。Git 会创建隐藏的 .git 目录,用来保存历史记录、元数据和引用。
这个隐藏目录就是仓库的内部数据库。可见文件是项目内容,而 .git 则是 Git 用来记录版本以及各次提交之间关系的内部机制。
这个过程包含三个主要阶段:
- 初始化:设置仓库。
- 暂存:准备要保存的文件。
- 提交:将文件快照保存到仓库历史记录中。
完成本实验后,你将拥有一个包含首次提交文件的本地 Git 仓库。
创建项目目录 project_x
在本步骤中,你将创建一个用于存放项目文件的新目录。在 Git 中,一个仓库通常包含在单个目录中。
首先打开终端。你当前位于 /home/labex/project 目录。接下来使用 mkdir 命令创建名为 project_x 的新目录。
运行以下命令:
mkdir project_x
然后使用 cd 命令进入这个新目录:
cd project_x
必须进入你准备初始化 Git 的目录。你可以使用 pwd 命令确认当前位置:
pwd
输出应为 /home/labex/project/project_x。
使用 git init 在其中初始化 Git
在本步骤中,你将把普通目录转换为 Git 仓库。这个过程称为「初始化」。
在 project_x 目录中运行以下命令:
git init
你应看到类似以下内容的输出:
Initialized empty Git repository in /home/labex/project/project_x/.git/
此命令会创建一个名为 .git 的隐藏子目录。这个隐藏目录包含 Git 跟踪项目所需的全部元数据和对象数据库。你不需要修改 .git 中的任何内容,但应了解它的存在。
因此,git init 不会上传任何内容,也不会自行创建历史记录。它只是准备目录,让 Git 可以在本地开始跟踪之后的文件快照。
你可以通过列出所有文件(包括隐藏文件)来确认 .git 是否存在:
ls -a
你应在列表中看到 .git。
创建文件 readme.txt
在本步骤中,你将创建一个要跟踪的文件。空仓库不太有用,因此先添加一些内容。
我们将创建一个名为 readme.txt 的简单文本文件。你可以使用 echo 命令同时创建文件并写入文本。
运行以下命令:
echo "This is my first git project" > readme.txt
此命令会创建 readme.txt,其内容为 "This is my first git project"。
确认文件已创建:
ls
你应在列表中看到 readme.txt。
使用 git status 检查仓库状态
在本步骤中,你将检查仓库的状态。Git 不会自动跟踪你创建的每个文件,你需要明确告诉它要跟踪哪些文件。
git status 是 Git 中最有用的命令之一。它会告诉你哪些文件已被跟踪、哪些文件已修改,以及哪些文件已暂存、准备提交。
运行以下命令:
git status
你应看到类似以下内容的输出:
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
readme.txt
nothing added to commit but untracked files present (use "git add" to track)
注意,readme.txt 出现在 Untracked files 下。这表示 Git 已经发现该文件,但还没有跟踪它的变化。
这里体现了 Git 中一个重要的区别:文件可以存在于工作目录中,但还没有纳入版本控制。Git 知道它的存在,但它还没有被加入仓库历史记录。
使用 git add 将文件添加到缓存区(暂存区)
在本步骤中,你将把文件移到「暂存区」(也称为索引)。暂存区用于在将一组更改提交到正式历史记录之前,准备文件快照。
暂存区是 Git 最重要的概念之一。它位于工作目录和仓库历史记录之间,让你可以准确决定哪些更改应包含在下一次提交中。
要开始跟踪 readme.txt 并将其暂存,请使用 git add 命令:
git add readme.txt
现在再次检查状态:
git status
输出现在应类似于:
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: readme.txt
注意,readme.txt 现在出现在 Changes to be committed 下。这表示该文件已暂存,可以提交。
因此,Git 常被描述为一个三状态工作流:工作树中的文件、暂存区中的更改,以及提交历史记录中的文件快照。
使用 git commit -m 提交文件
在本步骤中,你将把当前位于暂存区中的更改永久保存到仓库历史记录中。这个操作称为「提交」。
一次提交会保存项目快照,并需要一条描述更改内容的消息。我们使用 -m 选项直接在命令行中提供这条消息。
运行以下命令提交更改:
git commit -m "Initial commit"
你应看到确认提交成功的输出:
[master (root-commit) 1a2b3c4] Initial commit
1 file changed, 1 insertion(+)
create mode 100644 readme.txt
现在最后一次检查状态:
git status
输出应为:
On branch master
nothing to commit, working tree clean
这表示你的工作目录与仓库中的最新提交一致。你已成功保存第一个版本!
总结
在本实验中,你已成功初始化一个本地 Git 仓库。你学习了如何:
- 创建项目目录。
- 使用
git init初始化 Git。 - 创建新文件。
- 使用
git status检查仓库状态。 - 使用
git add暂存文件。 - 使用
git commit将文件提交到仓库历史记录中。
这些是使用 Git 时每天都会用到的基础命令。现在,你可以跟踪更改、保存版本并管理项目历史记录。



