如何在 Git 中区分已跟踪和未跟踪的文件

GitGitBeginner
立即练习

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

简介

Git 是一个强大的版本控制系统,可帮助开发人员跟踪其代码库中的更改。然而,了解 Git 中不同的文件状态对于有效管理项目至关重要。在本教程中,我们将探讨如何区分 Git 中的已跟踪文件和未跟踪文件,并为你提供有效管理它们的知识。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/DataManagementGroup(["Data Management"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/rm("Remove Files") git/BasicOperationsGroup -.-> git/clean("Clean Workspace") git/DataManagementGroup -.-> git/restore("Revert Files") subgraph Lab Skills git/add -.-> lab-415640{{"如何在 Git 中区分已跟踪和未跟踪的文件"}} git/status -.-> lab-415640{{"如何在 Git 中区分已跟踪和未跟踪的文件"}} git/rm -.-> lab-415640{{"如何在 Git 中区分已跟踪和未跟踪的文件"}} git/clean -.-> lab-415640{{"如何在 Git 中区分已跟踪和未跟踪的文件"}} git/restore -.-> lab-415640{{"如何在 Git 中区分已跟踪和未跟踪的文件"}} end

理解 Git 文件状态

在 Git 的世界里,文件可以处于三种主要状态之一:未跟踪、已跟踪和已修改。理解这些文件状态对于有效管理项目文件和理解 Git 工作流程至关重要。

未跟踪文件

未跟踪文件是指工作目录中 Git 不知道的文件。这些文件尚未添加到 Git 仓库中,也未被 Git 监控。当你运行 git status 命令时,未跟踪文件会被单独列出,表示它们不是仓库的一部分。

graph LR A[工作目录] --> B[未跟踪文件]

已跟踪文件

已跟踪文件是 Git 仓库的一部分。这些文件已使用 git add 命令添加到仓库中,并被 Git 监控。已跟踪文件可以处于两种状态之一:未修改或已修改。

graph LR A[工作目录] --> B[已跟踪文件] B --> C[未修改] B --> D[已修改]

已修改文件

已修改文件是自上次提交以来在工作目录中发生更改的已跟踪文件。当你运行 git status 命令时,这些文件会被列为“已修改”,可以使用 git add 命令将其暂存以便下次提交。

graph LR A[工作目录] --> B[已跟踪文件] B --> C[未修改] B --> D[已修改]

理解这些文件状态对于有效管理项目文件和理解 Git 工作流程至关重要。通过了解不同的文件状态,你可以更好地在 Git 生态系统中导航,并确保你的项目得到正确的跟踪和维护。

识别已跟踪和未跟踪的文件

识别已跟踪和未跟踪的文件是理解和管理 Git 仓库的关键步骤。让我们来探讨识别这些文件状态的不同方法。

使用 git status

git status 命令是识别文件状态的主要工具。当你运行 git status 时,Git 会显示你的文件列表及其当前状态。

$ git status
位于分支 main
你的分支与 'origin/main' 同步。

未跟踪的文件:
(使用 "git add <文件>..." 将其包含在将被提交的内容中)
example_untracked.txt

没有要提交的内容,但有未跟踪的文件(使用 "git add" 进行跟踪)

在输出中,你可以看到文件 example_untracked.txt 被列为未跟踪文件。

区分已跟踪和未跟踪的文件

要区分已跟踪和未跟踪的文件,你可以使用 git ls-files 命令。此命令将列出当前由 Git 跟踪的所有文件。

$ git ls-files
example_tracked.txt

通过比较 git statusgit ls-files 的输出,你可以轻松识别哪些文件是已跟踪的,哪些是未跟踪的。

忽略未跟踪的文件

有时,你的工作目录中可能有一些你不希望 Git 跟踪的文件,例如日志文件、编译后的二进制文件或临时文件。你可以在仓库中创建一个 .gitignore 文件,以指定 Git 应忽略的文件模式。

$ cat.gitignore
*.log
*.tmp

有了这个 .gitignore 文件,任何与指定模式匹配的文件都将被 Git 视为未跟踪文件。

了解如何识别已跟踪和未跟踪的文件是 Git 中的一项基本技能。通过掌握这些技术,你可以有效地管理项目文件并维护一个干净、有序的 Git 仓库。

管理已跟踪和未跟踪的文件

既然你已经了解了已跟踪文件和未跟踪文件之间的区别,那么让我们来探讨一下如何在你的 Git 仓库中管理它们。

添加未跟踪的文件

要将未跟踪的文件添加到 Git 仓库中,你可以使用 git add 命令。这会将该文件暂存以便下次提交。

$ git add example_untracked.txt

运行此命令后,文件 example_untracked.txt 将被视为已跟踪文件。

删除已跟踪的文件

如果你想从 Git 仓库中删除一个已跟踪的文件,可以使用 git rm 命令。这会将该文件从仓库和你的工作目录中删除。

$ git rm example_tracked.txt

忽略未跟踪的文件

如前所述,你可以创建一个 .gitignore 文件来指定 Git 应忽略的文件模式。这对于排除与你的项目无关的文件很有用,例如编译后的二进制文件、日志文件或临时文件。

这是一个 .gitignore 文件的示例:

## 编译后的源文件
*.com
*.class
*.dll
*.exe
*.o
*.so

## 日志文件
*.log

## 临时文件
*.swp
*.tmp

有了这个 .gitignore 文件,任何与指定模式匹配的文件都将被 Git 视为未跟踪文件,你不必担心它们会意外地被添加到仓库中。

恢复未跟踪的文件

如果你不小心删除了一个未跟踪的文件,可以使用 git clean 命令来恢复它。此命令将从你的工作目录中删除任何未跟踪的文件。

$ git clean -f

-f 选项告诉 Git 强制删除未跟踪的文件。

通过了解如何管理已跟踪和未跟踪的文件,你可以保持你的 Git 仓库井井有条,并确保只跟踪和提交必要的文件。

总结

在本教程结束时,你将对 Git 文件状态有扎实的理解,并且能够在你的 Git 仓库中识别和管理已跟踪及未跟踪的文件。这些知识将使你能够掌控你的代码库,简化你的开发工作流程,并确保项目的完整性。