简介
在这个实验中,你将学习如何检查 Git 仓库是否有已暂存的更改。你将使用 git status
命令查看已暂存的文件,并理解其输出,该输出会显示仓库的当前状态,包括已修改、已暂存和未跟踪的文件。
此外,你将探索如何使用 git diff --cached
来检查当前暂存区中的具体更改,从而验证仓库中已暂存和未暂存更改之间的差异。
在这个实验中,你将学习如何检查 Git 仓库是否有已暂存的更改。你将使用 git status
命令查看已暂存的文件,并理解其输出,该输出会显示仓库的当前状态,包括已修改、已暂存和未跟踪的文件。
此外,你将探索如何使用 git diff --cached
来检查当前暂存区中的具体更改,从而验证仓库中已暂存和未暂存更改之间的差异。
git status
查看已暂存的文件在这一步中,我们将再次使用 git status
命令,来查看在添加文件后 Git 是如何跟踪更改的。
首先,确保你位于 my-time-machine
目录中。如果不在,请使用 cd
命令:
cd ~/project/my-time-machine
现在,让我们创建一个名为 notes.txt
的新文件,并向其中添加一些内容:
echo "Ideas for the future" > notes.txt
此命令会创建包含指定文本的 notes.txt
文件。
接下来,让我们告诉 Git 我们要跟踪这个新文件。为此,我们使用 git add
命令:
git add notes.txt
此命令将 notes.txt
添加到暂存区。暂存区就像是更改在提交之前的“候诊室”。
现在,让我们使用 git status
检查仓库的状态:
git status
你应该会看到类似于以下的输出:
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: notes.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
message.txt
注意,现在的输出在“Changes to be committed”下列出了 notes.txt
。这意味着该文件已在暂存区中,准备包含在下一次提交中。
你可能还会看到 message.txt
列在“Untracked files”下。这是因为在前面的步骤中,我们还没有提交对 message.txt
的更改。Git 向我们显示,工作目录中仍有未被跟踪以用于 下一次 提交的更改。
理解 git status
的输出至关重要。它会告诉你仓库的当前状态,显示哪些文件已被修改、哪些已暂存待提交,以及哪些是未跟踪的。这有助于你跟踪自己的工作,并决定在下一个保存点中包含哪些内容。
git diff --cached
检查更改在这一步中,你将学习如何使用 git diff --cached
命令查看当前暂存区中的具体更改。
回顾上一步,我们已将 notes.txt
添加到了暂存区。现在,让我们看看 Git 准备提交哪些更改。
确保你位于 ~/project/my-time-machine
目录中:
cd ~/project/my-time-machine
现在,运行以下命令:
git diff --cached
你应该会看到类似于以下的输出:
diff --git a/notes.txt b/notes.txt
new file mode 100644
index 0000000..a1b2c3d
--- /dev/null
+++ b/notes.txt
@@ -0,0 +1 @@
+Ideas for the future
此输出显示了暂存区与上一次提交之间的差异。由于这是我们首次将 notes.txt
暂存,Git 将其显示为新文件。
让我们详细分析一下输出内容:
diff --git a/notes.txt b/notes.txt
:这一行表明我们正在比较 notes.txt
文件的两个版本。new file mode 100644
:这表明 notes.txt
是一个新文件。index 0000000..a1b2c3d
:这些是 Git 内部用于标识文件内容的标识符。--- /dev/null
:这代表文件添加之前的“空”状态。+++ b/notes.txt
:这代表文件在暂存区中的当前状态。@@ -0,0 +1 @@
:这是一个头部信息,指示发生更改的行。-0,0
表示原始(空)状态下没有行,+1
表示新状态下添加了一行。+Ideas for the future
:加号 +
表示这一行是新增的。git diff --cached
命令在提交暂存更改之前查看这些更改时非常有用。它能让你仔细检查即将保存到项目历史记录中的具体内容,有助于避免意外提交不需要的更改。
按 q
键退出差异视图并返回命令行。
在这一步中,你将通过修改一个已被 Git 跟踪的文件,进一步探究已暂存和未暂存更改之间的区别。
首先,确保你位于 ~/project/my-time-machine
目录中:
cd ~/project/my-time-machine
现在,让我们在 notes.txt
文件中再添加一行内容。你可以使用带有 >>
的 echo
命令将文本追加到现有文件中:
echo "Another idea" >> notes.txt
此命令会将 "Another idea" 这一行添加到 notes.txt
文件的末尾。
让我们再次检查仓库的状态:
git status
你应该会看到类似于以下的输出:
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: notes.txt
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: notes.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
message.txt
注意,notes.txt
现在出现在两个部分中:
notes.txt
版本(仅包含 "Ideas for the future")。notes.txt
所做的更改(添加了 "Another idea")。这些更改位于你的工作目录中,但尚未添加到暂存区。这是 Git 中的一个关键概念:暂存区保存着准备用于 下一次 提交的更改快照,而工作目录包含文件的当前状态,其中包括尚未暂存的更改。
若要查看工作目录和暂存区之间的差异,你可以不使用任何选项直接使用 git diff
命令:
git diff
这将显示 未 暂存的更改。你应该会看到显示添加了 "Another idea" 这一行的输出。
若要查看暂存区和上一次提交之间的差异(我们在上一步中已经看过),你可以使用 git diff --cached
命令。
理解已暂存和未暂存更改之间的区别,以及如何使用 git status
和 git diff
查看这些更改,是有效使用 Git 的基础。它能让你精确控制每次提交中包含的内容。
在本次实验中,你学习了如何检查 Git 仓库是否有已暂存的更改。首先,你使用 git status
命令查看了仓库的当前状态,包括已添加到暂存区的文件。你了解到 git status
能清晰地指出哪些文件属于“待提交的更改”。
接着,你探究了 git diff --cached
命令,该命令可专门用于查看已暂存的更改与上一次提交之间的差异。这让你能够看到准备提交的具体内容修改。最后,你强化了对已暂存和未暂存更改之间区别的理解,明白 git status
提供了一个总体概述,而 git diff --cached
则展示了已暂存更改的详细内容。