简介
在这个实验中,你将学习如何识别 Git 仓库中的未跟踪文件。你将探索两种主要方法:使用 git status
命令查看仓库的整体状态,包括未跟踪文件;以及使用 git ls-files --others
命令更有针对性地仅列出未跟踪文件。在本实验结束时,你将了解 Git 如何区分已跟踪和未跟踪文件,以及如何使用这些命令有效地管理项目文件。
在这个实验中,你将学习如何识别 Git 仓库中的未跟踪文件。你将探索两种主要方法:使用 git status
命令查看仓库的整体状态,包括未跟踪文件;以及使用 git ls-files --others
命令更有针对性地仅列出未跟踪文件。在本实验结束时,你将了解 Git 如何区分已跟踪和未跟踪文件,以及如何使用这些命令有效地管理项目文件。
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 status
和 git 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 add
,你可以明确地告诉 Git 你希望将哪些文件包含在你的版本控制项目中。这种控制对于有效管理项目并保持项目历史记录的整洁至关重要。
在下一个实验中,我们将继续基于这些基本概念进行操作,进行更多的提交,并探索 Git 历史记录的强大功能。
在这个实验中,我们学习了如何识别 Git 仓库中的未跟踪文件。首先,我们使用了 git status
命令,它能全面概述仓库的状态,其中包含一个专门列出未跟踪文件的部分。这展示了 Git 如何区分它正在积极跟踪的文件和它还未识别的新文件。
然后,我们探索了 git ls-files --others
命令,这是一种专门用于列出工作目录中未跟踪文件的替代方法。该命令提供了一种更有针对性的方式,让你了解哪些文件目前不在 Git 的版本控制之下。理解如何识别未跟踪文件对于管理哪些文件会被纳入项目历史记录以及保持仓库的整洁至关重要。