如何检查文件是否在 Git 索引中

GitGitBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何检查文件是否已被添加到 Git 索引(也称为暂存区)。我们将探讨索引的概念,以及它在为提交准备更改时所起的作用。

你将使用 git ls-files --stage 命令查看索引的内容,并使用 git status 命令全面了解仓库的状态,包括已暂存和未暂存的更改。最后,你将测试 Git 如何处理尚未添加到索引的文件。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") subgraph Lab Skills git/add -.-> lab-560028{{"如何检查文件是否在 Git 索引中"}} git/status -.-> lab-560028{{"如何检查文件是否在 Git 索引中"}} end

运行 git ls-files --stage

在这一步,我们将探索 Git 索引(也称为暂存区)。索引是 Git 中一个至关重要的概念。它就像一个等候区,你可以在提交更改之前在这里对其进行准备。

可以这样理解:当你在工作目录中对文件进行更改时,这些更改不会自动包含在下一次提交中。你首先需要使用 git add 命令将它们添加到索引中。索引保存了你已暂存更改的快照,随时可以进行提交。

要查看当前索引中的内容,我们使用 git ls-files --stage 命令。该命令会列出当前为下一次提交而暂存的文件。

让我们在你的 my-time-machine 目录中尝试一下:

cd ~/project/my-time-machine
git ls-files --stage

由于在这个新仓库中我们还没有将任何文件添加到索引中,你应该看不到任何输出。这表明索引目前为空。

理解索引是掌握 Git 的关键。它让你能够精细控制每次提交的内容,使你可以将相关的更改分组在一起,让提交历史保持清晰和有条理。

使用 git status 验证索引

在上一步中,我们使用 git ls-files --stage 查看了索引的内容。另一个有助于我们了解仓库状态(包括索引状态)的命令是 git status

git status 命令会提供一个摘要,展示你的工作目录和暂存区相对于上一次提交的状态。它会告诉你哪些文件被修改了、哪些文件已为下一次提交暂存,以及哪些文件未被跟踪。

让我们在 my-time-machine 目录中运行 git status 命令:

cd ~/project/my-time-machine
git status

由于这是一个全新的仓库,我们还没有创建任何文件或进行任何提交,输出应该类似于以下内容:

On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

这个输出确认了没有需要提交的更改,这意味着索引是空的,就像 git ls-files --stage 命令显示的那样。“nothing to commit”消息直接反映了索引的状态。

随着我们在实验中继续进行,开始创建和暂存文件,你将看到 git status 的输出如何变化,以反映索引的内容和工作目录的状态。

测试未索引的文件

在这一步,我们将在工作目录中创建一个新文件,并观察在将其添加到索引之前,Git 是如何识别它的。这将帮助你理解工作目录中的文件和索引中的文件之间的区别。

首先,确保你位于 my-time-machine 目录中:

cd ~/project/my-time-machine

现在,让我们使用 echo 命令创建一个简单的文本文件:

echo "This is a new file." > new_file.txt

此命令创建了一个名为 new_file.txt 的文件,并将文本“This is a new file.”写入其中。

现在,让我们再次使用 git status 检查仓库的状态:

git status

你应该会看到类似于以下的输出:

On branch master

No commits yet

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

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

注意“Untracked files:”部分。Git 发现 new_file.txt 存在于工作目录中,但尚未被 Git 跟踪。这意味着它不在索引中,也不属于任何提交历史。

这是一个关键概念:Git 只跟踪你使用 git add 明确告知它跟踪的文件。在 Git 仓库的工作目录中创建的任何新文件最初都是“未跟踪的”。

在下一步中,我们将把这个文件添加到索引中,为第一次提交做准备。

总结

在本次实验中,我们学习了如何检查文件是否存在于 Git 索引(也称为暂存区)中。我们使用 git ls-files --stage 命令直接列出了当前为下一次提交而暂存的文件。我们还探究了 git status 命令,该命令提供了仓库状态的全面概述,包括有关已暂存、已修改和未跟踪文件的信息,帮助我们验证索引的内容。