在 Linux 中管理本地 Git 仓库

CompTIABeginner
立即练习

介绍

在本实验中,你将学习在 Linux 环境中管理本地 Git 仓库的基础命令。你将从使用 git init 初始化一个新仓库以及使用 git config 配置用户身份开始,这是任何使用 Git 进行版本控制的项目中至关重要的第一步。

完成初始设置后,你将练习 Git 的核心工作流。这包括创建一个新文件、使用 git add 将其暂存以进行追踪,以及使用 git commit 将其保存到仓库的历史记录中。随后,你将修改该文件并提交更改,最后学习如何使用 git log 命令查看完整的提交历史,从而了解项目的演进过程。

这是一个引导实验,提供了逐步指导来帮助你学习和练习。请仔细遵循说明完成每个步骤并获得实践经验。历史数据表明,这是一个初学者级别的实验,完成率为 100%。它获得了学习者 99% 的好评率。

初始化 Git 仓库并配置用户设置

在这一步中,你将首先初始化一个新的 Git 仓库并配置你的用户信息。Git 仓库是一个目录,Git 会在这里追踪项目文件的所有更改。初始化仓库是使用 Git 进行版本控制的第一步。

你当前的工作目录是 /home/labex/project。我们将使用这个目录来创建 Git 仓库。

首先,运行 git init 命令。该命令会在当前目录下创建一个新的空 Git 仓库。它通过创建一个名为 .git 的隐藏子目录来实现,该目录包含了所有必要的仓库文件。

git init

你应该会看到确认空仓库已初始化的输出信息:

Initialized empty Git repository in /home/labex/project/.git/

仓库创建完成后,下一步是设置你的用户身份。Git 使用这些信息将你的姓名和电子邮件地址与你进行的每一次提交(Commit)关联起来。在协作项目中,这对于追踪谁做了哪些更改至关重要。

我们将使用带有 --global 标志的 git config 命令。--global 标志确保此配置适用于 labex 用户在该系统上操作的所有 Git 仓库。

执行以下命令来设置你的用户名和电子邮件地址。在本实验中,我们将使用 labex 作为用户名,labex@example.com 作为电子邮件。

git config --global user.name "labex"
git config --global user.email "labex@example.com"

如果执行成功,这些命令不会产生任何输出。要验证配置是否设置正确,你可以列出该用户的所有 Git 配置设置:

git config --list

输出将显示所有设置的列表,包括你刚刚配置的 user.nameuser.email

user.name=labex
user.email=labex@example.com
...

你现在已成功初始化了 Git 仓库并配置了用户身份。你已经准备好开始添加文件并追踪更改了。

使用 git add 和 git commit 创建并提交第一个文件

在这一步中,你将创建第一个文件并将其提交到 Git 仓库。提交(Committing)是将暂存的更改快照保存到仓库历史记录中的过程。这个过程涉及两个主要命令:git addgit commit

首先,让我们创建一个简单的 README.md 文件。这是项目中常见的文件,用于提供项目信息。我们将使用 echo 命令创建该文件并添加一些文本。所有命令都应在当前目录 /home/labex/project 中运行。

echo "Hello, Git" > README.md

创建文件后,你可以使用 git status 命令检查仓库的状态。该命令会显示工作目录和暂存区(Staging Area)的状态。

git status

输出如下所示:

On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
 README.md

nothing added to commit but untracked files present (use "git add" to track)

此输出告诉你 README.md 是一个「未追踪的文件」(Untracked file)。这意味着 Git 发现了该文件,但它尚未包含在仓库的版本历史中。

要开始追踪这个新文件,你需要将其添加到暂存区。暂存区是一个中间步骤,你可以在提交更改之前准备一组更改。使用 git add 命令暂存 README.md

git add README.md

该命令不会产生任何输出。要查看发生了什么,请再次运行 git status

git status

现在的输出发生了变化:

On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
 new file:   README.md

该文件现在列在「待提交的更改」(Changes to be committed)下,这意味着它已进入暂存区,准备好进行下一次提交。

最后,使用 git commit 命令将此快照保存到项目的历史记录中。最佳实践是使用 -m 标志为每次提交添加描述性消息。这条消息用于解释进行了哪些更改。

git commit -m "Initial commit: Added README.md"

运行命令后,你将看到一条总结提交信息的确认消息:

[master (root-commit) <commit_hash>] Initial commit: Added README.md
 1 file changed, 1 insertion(+)
 create mode 100644 README.md

你已成功完成了第一次提交!README.md 文件现在正式成为了 Git 仓库历史记录的一部分。

修改文件并提交更改

在这一步中,你将学习如何追踪现有文件的修改。版本控制的一个核心功能是能够查看文件随时间演变的过程。这是通过在每次更新文件时提交更改来实现的。

我们将继续处理 /home/labex/project 目录下的 README.md 文件。让我们给它添加一行新文本。我们将再次使用 echo 命令,但这次使用 >> 运算符,它会将内容追加到文件末尾而不是覆盖原内容。

echo "This is a new line." >> README.md

文件修改后,让我们用 git status 检查仓库状态。

git status

Git 会报告 README.md 文件已被修改:

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
 modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")

输出在「未暂存以备提交的更改」(Changes not staged for commit)下显示了 modified: README.md。这意味着 Git 检测到了更改,但尚未将其添加到暂存区以供下次提交。

与处理新文件一样,你必须使用 git add 来暂存这些修改。这告诉 Git 你希望在下次提交中包含这些特定的更改。

git add README.md

同样,该命令没有输出。让我们再次运行 git status 以确认更改已暂存。

git status

现在输出显示该文件位于「待提交的更改」下:

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
 modified:   README.md

更改暂存后,你就可以将其提交到仓库历史记录中了。使用 git commit 并附带一条清晰描述更新内容的详细消息。

git commit -m "Added a new line to README.md"

你将看到提交的确认消息:

[master <commit_hash>] Added a new line to README.md
 1 file changed, 1 insertion(+)

你现在已成功修改了文件并提交了更改。这种「修改、暂存、提交」的工作流是你使用 Git 时会反复使用的基本循环。

使用 git log 查看提交历史

在最后一步中,你将学习如何查看仓库的提交历史。git log 命令是一个强大的工具,可以让你按时间顺序查看所有已完成提交的列表。这对于理解项目的演进过程至关重要。

/home/labex/project 目录中,运行 git log 命令:

git log

该命令将显示你所做提交的详细列表,最近的提交会显示在最上面。输出将类似于:

commit <commit_hash_2> (HEAD -> master)
Author: labex <labex@example.com>
Date:   <commit_date_2>

    Added a new line to README.md

commit <commit_hash_1>
Author: labex <labex@example.com>
Date:   <commit_date_1>

    Initial commit: Added README.md

让我们分解每个提交包含的信息:

  • commit:一个唯一的 40 字符 SHA-1 哈希值,作为提交的标识符。
  • Author:根据你的 Git 配置,显示进行提交的人员姓名和电子邮件。
  • Date:显示提交的具体时间戳。
  • 提交消息:缩进的文本是你通过 -m 标志提供的消息,用于解释提交的目的。

日志显示在分页程序(如 less)中。你可以使用方向键上下滚动。要退出日志视图并返回终端提示符,只需按下 q 键。

如果想查看更紧凑的提交历史,可以使用 --oneline 标志。这对于快速获取概览非常有用。

git log --oneline

输出会简短得多,每行只显示提交哈希的简写和提交消息:

<short_hash_2> (HEAD -> master) Added a new line to README.md
<short_hash_1> Initial commit: Added README.md

恭喜你!你现在已经掌握了初始化 Git 仓库、添加和提交文件以及查看项目历史记录的基本工作流。

总结

在本实验中,你学习了在 Linux 环境中管理本地 Git 仓库的基础步骤。你首先使用 git init 命令在项目目录中初始化了一个新仓库。初始化之后,你通过 git config --global 命令配置了必要的设置(用户名和电子邮件),以确保未来的所有提交都能正确归属。随后,你通过创建新文件、使用 git add 暂存更改以及使用 git commit 将更改永久记录到仓库历史中,练习了版本控制的核心工作流。

此外,你还练习了制作和追踪更改的迭代过程。这包括修改现有文件,并重复「暂存和提交」循环以保存新版本。最后,你学习了如何使用 git log 命令查看项目历史,该命令按时间顺序列出了所有提交,包括它们的唯一标识符、作者、日期和提交消息。这让你能够清晰地回顾仓库随时间推移而发生的各种变化。