简介
在这个实验中,你将学习如何识别 Git 仓库中的未跟踪文件。了解未跟踪文件对于管理项目状态以及确保只有相关文件被纳入版本控制至关重要。
我们将首先使用基础的 git status
命令来列出未跟踪文件,并理解其输出结果。接着,我们将探索 git ls-files --others
命令,它提供了一种更直接的方式来列出未跟踪文件。最后,我们将简要介绍在这个过程中如何处理被忽略的文件。
在这个实验中,你将学习如何识别 Git 仓库中的未跟踪文件。了解未跟踪文件对于管理项目状态以及确保只有相关文件被纳入版本控制至关重要。
我们将首先使用基础的 git status
命令来列出未跟踪文件,并理解其输出结果。接着,我们将探索 git ls-files --others
命令,它提供了一种更直接的方式来列出未跟踪文件。最后,我们将简要介绍在这个过程中如何处理被忽略的文件。
git status
命令列出未跟踪文件在这一步中,你将学习如何使用 git status
命令来查看项目目录中哪些文件未被 Git 跟踪。这是了解仓库状态的基础命令。
首先,确保你位于项目目录中。如果你按照上一个实验的步骤操作,你应该位于 ~/project/my-time-machine
目录下。你可以使用 pwd
命令来验证当前所在的目录:
pwd
输出结果应该类似于:
/home/labex/project/my-time-machine
现在,让我们在这个目录中创建一个新文件。我们将其命名为 notes.txt
:
echo "Some random notes" > notes.txt
此命令创建了一个名为 notes.txt
的文件,并将文本 "Some random notes" 写入其中。
现在,让我们运行 git status
命令,看看 Git 如何识别这个新文件:
git status
你应该会看到类似于以下的输出:
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: message.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
notes.txt
no changes added to commit (use "git add" and/or "git commit -a")
注意 "Untracked files:" 部分。Git 告知我们 notes.txt
是一个未跟踪的文件。这意味着 Git 能识别该文件,但目前并未对其版本进行管理。除非你明确指示,否则 Git 不会将此文件包含在提交中。
了解未跟踪文件很重要,因为这有助于你保持仓库的整洁,只跟踪属于项目的文件。临时文件、构建产物或个人笔记通常会被设置为未跟踪状态。
git ls-files --others
进行检查在上一步中,我们使用 git status
命令查看了未跟踪的文件。虽然 git status
能很好地展示仓库的整体状态,但有时你可能只想要一个简单的未跟踪文件列表。这时,git ls-files --others
命令就派上用场了。
确保你仍然位于 ~/project/my-time-machine
目录中。
现在,运行以下命令:
git ls-files --others
你应该会看到如下输出:
notes.txt
此命令会列出工作目录中所有未被 Git 跟踪的文件。与 git status
的详细输出相比,这是一种更直接的查看未跟踪文件的方式。
--others
选项指示 git ls-files
仅列出不属于 Git 索引(即未被跟踪)的文件。这在编写脚本时很有用,或者当你只需要快速查看项目中有哪些新的未跟踪文件时也很方便。
你可能会疑惑,为什么要使用 git ls-files --others
而不是 git status
。虽然 git status
能提供包括已修改和已暂存文件在内的全面视图,但 git ls-files --others
专门用于列出未跟踪的文件。当你想以编程方式处理或管理未跟踪文件时,这会非常有用,例如在清理临时文件的脚本中。
在前面的步骤中,你学习了如何使用 git status
和 git ls-files --others
来识别未跟踪的文件。然而,有时你会有一些文件是你 有意 不想让 Git 跟踪的,比如临时文件、构建输出或者包含敏感信息的配置文件。Git 允许你在 .gitignore
文件中指定这些文件。
在这一步中,你将创建一个 .gitignore
文件,并了解它如何影响 git status
和 git ls-files --others
的输出。
首先,确保你位于 ~/project/my-time-machine
目录中。
现在,让我们创建一个想要忽略的文件。我们将其命名为 temp.log
:
echo "This is a temporary log file" > temp.log
再次运行 git status
:
git status
你应该会看到 notes.txt
和 temp.log
都被列为未跟踪文件:
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: message.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
notes.txt
temp.log
no changes added to commit (use "git add" and/or "git commit -a")
现在,让我们创建一个 .gitignore
文件,并将 temp.log
添加到其中。使用 nano
编辑器来创建和编辑该文件:
nano .gitignore
在 nano
编辑器中,输入以下内容:
temp.log
按下 Ctrl + X
,然后按 Y
保存,再按 Enter
确认文件名。
现在,再次运行 git status
:
git status
这次,temp.log
应该不再出现在“Untracked files:”列表中:
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: message.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
notes.txt
no changes added to commit (use "git add" and/or "git commit -a")
现在,Git 知道要忽略 temp.log
了。让我们看看 git ls-files --others
会受到怎样的影响:
git ls-files --others
现在输出应该只显示 notes.txt
:
notes.txt
默认情况下,git ls-files --others
不会 列出被忽略的文件。这通常是你期望的行为,因为你通常不想看到那些你明确告诉 Git 要忽略的文件。
如果你 确实 想同时查看被忽略的文件和其他未跟踪的文件,可以在 git ls-files --others
中使用 --ignored
选项:
git ls-files --others --ignored
现在输出将同时包含未跟踪和被忽略的文件:
.gitignore
notes.txt
temp.log
请注意,在你添加并提交 .gitignore
文件之前,它本身也是一个未跟踪的文件。
了解如何使用 .gitignore
对于保持仓库的整洁以及专注于实际的项目文件至关重要。它可以防止意外提交那些不应该进行版本控制的文件。
在本次实验中,你学习了如何识别 Git 仓库中的未跟踪文件。首先,你使用了基础的 git status
命令,它能全面展示仓库的状态,其中包含专门列出未跟踪文件的部分。这个命令对于了解哪些文件目前未被 Git 管理至关重要。
接着,你探索了 git ls-files --others
命令,将其作为列出未跟踪文件的另一种方法。该命令提供了更简洁的输出,仅列出未跟踪的文件本身。虽然第三步的完整内容未给出,但标题表明这一步会将此检查与对忽略文件的考虑相结合,忽略文件是通过 .gitignore
文件有意排除在 Git 跟踪之外的文件。