如何检查 Git 中的文件是否未被跟踪

GitGitBeginner
立即练习

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

简介

在这个实验中,你将学习如何识别 Git 仓库中的未跟踪文件。你将探索两种主要方法:使用 git status 命令查看仓库的整体状态,包括未跟踪文件;以及使用 git ls-files --others 命令更有针对性地仅列出未跟踪文件。在本实验结束时,你将了解 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-560033{{"如何检查 Git 中的文件是否未被跟踪"}} git/status -.-> lab-560033{{"如何检查 Git 中的文件是否未被跟踪"}} end

运行 git status 列出未跟踪文件

在这一步中,我们将使用 git status 命令来查看 Git 如何跟踪文件以及识别那些它尚未知晓的文件。

首先,确保你位于 my-time-machine 目录中。如果你不在该目录,请使用 cd 命令:

cd ~/project/my-time-machine

现在,让我们在这个目录中创建一个新文件。我们将其命名为 notes.txt

echo "Ideas for future projects" > notes.txt

此命令创建了一个名为 notes.txt 的文件,并将文本 "Ideas for future projects" 写入其中。

现在,让我们询问 Git 我们仓库的状态:

git status

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

On branch master
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   message.txt

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

注意 "Untracked files:" 部分。Git 发现目录中存在一个新文件 notes.txt,但它尚未成为仓库历史的一部分。Git 不会自动跟踪你创建的每个文件。这让你可以控制哪些文件被纳入版本控制。

为什么这很重要呢?想象一下,你的项目目录中有临时文件、构建输出或个人笔记。你不会希望这些文件使项目历史变得杂乱。Git 的“未跟踪”状态允许你将这些文件与你正在通过版本控制积极管理的文件分开。

在下一步中,我们将探索另一种列出这些未跟踪文件的方法。

使用 git ls-files --others

在上一步中,我们了解到 git status 可以显示未跟踪的文件。Git 还提供了一个更直接的命令,专门用于列出索引(index)和工作树(working tree)中的文件。我们可以使用带有 --others 选项的 git ls-files 命令来仅列出未跟踪的文件。

确保你仍然位于 ~/project/my-time-machine 目录中:

cd ~/project/my-time-machine

现在,运行以下命令:

git ls-files --others

你应该会看到以下输出:

notes.txt

此命令专门列出存在于你的工作目录中但未被 Git 跟踪的文件。当你想要一份仅包含 Git 当前忽略或尚未知晓的文件的简洁列表时,这个命令非常有用。

比较 git statusgit ls-files --others

  • git status 能让你全面了解仓库的状态,包括有更改的已跟踪文件、暂存的更改以及未跟踪的文件。
  • git ls-files --others 更具针对性,仅列出未跟踪的文件。

这两个命令在不同的场景中都很有用。git status 适合进行总体概览,而 git ls-files --others 在你特别想识别未跟踪文件时很方便,你可能会据此决定是将这些文件添加到仓库中,还是忽略它们。

在下一步中,我们将通过添加另一个文件并观察 Git 的反应,进一步探索已跟踪文件和未跟踪文件之间的区别。

测试已跟踪与未跟踪文件

在这一步中,我们将通过把 notes.txt 文件添加到 Git 的跟踪列表中,并观察状态的变化,来加深对已跟踪文件和未跟踪文件的理解。

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

cd ~/project/my-time-machine

现在,让我们使用 git add 命令告诉 Git 开始跟踪 notes.txt 文件:

git add notes.txt

此命令将 notes.txt 添加到暂存区(staging area),为将其包含在下一次提交中做准备。

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

git status

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

On branch master
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   message.txt
        new file:   notes.txt

注意,notes.txt 不再列在 "Untracked files:" 下面。相反,它出现在 "Changes to be committed:" 下面,并被标记为 "new file"。这意味着 Git 现在正在跟踪 notes.txt,并且它已准备好被包含在下一个保存点(提交)中。

这展示了关键的区别:

  • 未跟踪文件:存在于你的工作目录中,但尚未使用 git add 命令添加到暂存区的文件。Git 知道它们的存在,但不会管理它们的版本。
  • 已跟踪文件:Git 正在积极管理的文件。一旦一个文件被添加并提交,Git 就会随时间跟踪它的更改。

通过使用 git add,你可以明确地告诉 Git 你希望将哪些文件包含在你的版本控制项目中。这种控制对于有效管理项目并保持项目历史记录的整洁至关重要。

在下一个实验中,我们将继续基于这些基本概念进行操作,进行更多的提交,并探索 Git 历史记录的强大功能。

总结

在这个实验中,我们学习了如何识别 Git 仓库中的未跟踪文件。首先,我们使用了 git status 命令,它能全面概述仓库的状态,其中包含一个专门列出未跟踪文件的部分。这展示了 Git 如何区分它正在积极跟踪的文件和它还未识别的新文件。

然后,我们探索了 git ls-files --others 命令,这是一种专门用于列出工作目录中未跟踪文件的替代方法。该命令提供了一种更有针对性的方式,让你了解哪些文件目前不在 Git 的版本控制之下。理解如何识别未跟踪文件对于管理哪些文件会被纳入项目历史记录以及保持仓库的整洁至关重要。