简介
在这个实验中,你将学习如何使用 git check-ignore
命令来确定一个文件是否被 Git 忽略。你将创建一个 .gitignore
文件,向其中添加规则,然后使用 git check-ignore
来验证哪些文件被忽略以及被忽略的原因。
你还将探索 .gitignore
文件中的不同规则如何影响哪些文件不被纳入版本控制,从而更深入地理解 Git 如何处理被忽略的文件。
在这个实验中,你将学习如何使用 git check-ignore
命令来确定一个文件是否被 Git 忽略。你将创建一个 .gitignore
文件,向其中添加规则,然后使用 git check-ignore
来验证哪些文件被忽略以及被忽略的原因。
你还将探索 .gitignore
文件中的不同规则如何影响哪些文件不被纳入版本控制,从而更深入地理解 Git 如何处理被忽略的文件。
git check-ignore
检查文件在这一步中,你将学习如何使用 git check-ignore
命令。这个命令对于理解 Git 为何忽略某些文件或目录非常有用,它能帮助你调试 .gitignore
文件。
首先,确保你处于项目目录中。打开终端并输入:
cd ~/project/my-time-machine
现在,创建一个你期望 Git 忽略的文件。我们将创建一个名为 temp.log
的文件。通常,日志文件在 Git 仓库中会被忽略。
echo "This is a temporary log file." > temp.log
接下来,创建一个 .gitignore
文件,并添加一个规则来忽略 .log
文件。
echo "*.log" > .gitignore
现在,你可以使用 git check-ignore
来查看 Git 是否忽略了 temp.log
文件。
git check-ignore temp.log
如果 Git 忽略了该文件,命令将输出 .gitignore
文件中与该文件匹配的规则。你应该会看到类似以下的输出:
.gitignore:1:*.log temp.log
这个输出表明,文件 temp.log
被忽略是因为 .gitignore
文件第 1 行的规则 *.log
。
如果文件未被忽略,该命令将不会产生任何输出。
理解 git check-ignore
对于有效管理项目文件至关重要。它能防止你意外地将不想纳入仓库的文件(如临时文件、构建产物或敏感配置文件)提交到仓库中。
.gitignore
规则在这一步中,你将探索 .gitignore
中的不同规则如何影响哪些文件会被忽略。.gitignore
文件使用特定的规则来告知 Git 哪些文件或目录不应被纳入版本控制。
确保你仍处于 ~/project/my-time-machine
目录中。
让我们添加一些新文件并修改 .gitignore
文件,以了解不同规则的作用。
首先,创建一些新文件:
mkdir build
echo "This is a build artifact." > build/output.txt
echo "Another log file." > error.log
echo "A temporary file." > temp.dat
echo "A configuration file." > config.ini
现在,编辑 .gitignore
文件以包含更多规则。你可以使用 nano
编辑器来完成此操作。
nano .gitignore
在 nano
编辑器中,你应该会看到 *.log
。在其下方添加以下几行:
build/
*.dat
config.ini
你的 .gitignore
文件现在应该如下所示:
*.log
build/
*.dat
config.ini
按 Ctrl + X
,然后按 Y
,最后按 Enter
保存并退出 nano
。
现在,使用带有 -v
标志的 git check-ignore
命令,查看是哪个规则忽略了每个文件。-v
标志会提供详细输出,显示匹配的规则和源文件(在这种情况下是 .gitignore
)。
git check-ignore -v temp.log error.log build/output.txt temp.dat config.ini
你应该会看到类似以下的输出:
.gitignore:1:*.log temp.log
.gitignore:1:*.log error.log
.gitignore:2:build/ build/output.txt
.gitignore:3:*.dat temp.dat
.gitignore:4:config.ini config.ini
此输出证实了:
temp.log
和 error.log
被 *.log
规则忽略。build/output.txt
被忽略是因为整个 build/
目录被忽略。temp.dat
被 *.dat
规则忽略。config.ini
被 config.ini
规则忽略。理解这些规则对于保持仓库的整洁,使其仅关注你想要跟踪的文件至关重要。
在这一步中,你将使用 git check-ignore
命令来确认那些未被 .gitignore
文件忽略的文件不会产生任何输出。这有助于你巩固对该命令工作原理的理解,以及如何验证 Git 是否正在跟踪你期望它跟踪的文件。
确保你处于 ~/project/my-time-machine
目录中。
在之前的实验中,你已经创建了 message.txt
文件。这个文件并未列在 .gitignore
文件中,因此 Git 不应忽略它。
让我们对 message.txt
文件使用 git check-ignore
命令:
git check-ignore message.txt
正如预期的那样,这个命令应该不会产生任何输出。这表明 message.txt
没有被 .gitignore
文件中的任何规则或其他忽略规则所忽略。
现在,创建另一个你不打算忽略的文件:
echo "This file should be tracked." > important_file.txt
然后检查它的忽略状态:
git check-ignore important_file.txt
同样,你应该看不到任何输出,这证实了 important_file.txt
没有被忽略。
最后,使用 git status
命令来查看 Git 如何识别这些文件。
git status
你应该会看到类似以下的输出:
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: .gitignore
Untracked files:
(use "git add <file>..." to include in what will be committed)
important_file.txt
message.txt
nothing added to commit but untracked files present (use "git add" to track)
注意,important_file.txt
和 message.txt
被列在“Untracked files”下面。这意味着 Git 能识别它们,但目前并未跟踪它们的更改。被忽略的文件(temp.log
、error.log
、build/output.txt
、temp.dat
、config.ini
)没有列在这里,因为 Git 被明确告知要忽略它们。
这一步强化了这样一个概念:git check-ignore
是一个用于验证忽略规则的工具,未被忽略规则匹配的文件在 git status
中会显示为“Untracked”,直到你使用 git add
命令明确将它们添加到跟踪列表中。
在本次实验中,你学习了如何使用 git check-ignore
命令来确定某个特定文件是否被 Git 忽略。你练习了创建 .gitignore
文件、向其中添加规则,然后使用 git check-ignore
命令来验证预期要忽略的文件确实被忽略了。git check-ignore
命令的输出帮助你理解了 .gitignore
文件中的哪条规则导致了文件被忽略。
你还探索了 .gitignore
文件中的不同规则如何影响哪些文件会被忽略。通过创建各种文件并使用不同规则修改 .gitignore
文件,你更好地理解了 Git 如何解释这些规则,从而将文件和目录排除在版本控制之外。这些知识对于有效管理哪些文件会被纳入 Git 仓库至关重要。