初始化本地仓库

GitBeginner
立即练习

简介

在本实验中,你将使用 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 仓库。你学习了如何:

  1. 创建项目目录。
  2. 使用 git init 初始化 Git。
  3. 创建新文件。
  4. 使用 git status 检查仓库状态。
  5. 使用 git add 暂存文件。
  6. 使用 git commit 将文件提交到仓库历史记录中。

这些是使用 Git 时每天都会用到的基础命令。现在,你可以跟踪更改、保存版本并管理项目历史记录。