课程 15 · 日常工作
安全地忽略文件并清理未跟踪的工作
提交课程忽略策略,然后预览并仅删除一次性未跟踪的暂存文件。将忽略的构建输出、跟踪的工作和恢复范围分开。
- 级别: 中级
- 阅读 2 分钟
- 6 分钟的视频
- 已更新
- 在这节课之前: 在判断更改之前先阅读比较
进度已保存在此浏览器中。
播放时会加载来自 YouTube 的视频(隐私增强模式)。
你将学到什么
- 解释忽略规则与跟踪文件。
- 预览小范围的清理。
- 检查应用程序的确切删除列表。
- 区分本机删除和应用程序快照。
开始之前
从第 14 课结束的地方开始:main/H7 clean,最小的 .gitignore 仅包含 dist/,标签 v0.1.0 固定在 H7。该视频添加了生成的 dist/index.html,该规则已将其隐藏。
该视频是在 Ubuntu 24.04 上使用 Git 2.52.0 和 GitTree 2.0 录制的:忽略文件、提交、暂存文件和清理均在应用程序中完成;之前的状态、预览和检查在终端中运行,并为预览提供单独的副本。 macOS 或 Windows 上没有运行任何内容,并且 Ubuntu 是唯一记录的 Linux 系统。 GitTree 的源 Git 版本是 2.39.0。
GitTree 要求您登录;免费计划涵盖了这里的每一步。不需要提供商帐户、专业版/试用版、API 凭证或互联网服务。本地裸源不是 GitLab 或 CI。所有身份均使用 example.com;切勿在源代码检查中运行本课程。
通过 GitTree 或本地路径以相同的输入进行突变,而不是连续进行。只读验证可以遵循其中任何一个。任何被描述为终端工作的准备工作都被标记为本机准备,而不是发明的应用程序功能。
概念和状态效应
忽略规则通常会隐藏未跟踪的候选人;它们不会停止跟踪已索引的路径、清除历史记录或保护秘密。像任何其他文件一样提交共享策略。
清理操作会删除其范围内未跟踪的路径。原生 git clean 没有内置恢复快照;除非单独保存,否则删除未跟踪的文件无法从普通提交历史记录中恢复。
GitTree 的清理未跟踪文件...构建精确列表并在删除之前保护列出的字节。选项“包括忽略的文件”和“仅忽略的文件”更改范围并且是互斥的。源保护并不能证明记录了特定的撤消操作。
保存/提交 .gitignore 更改索引/树/主。清理暂存仅删除未跟踪的磁盘文件;它不会提交或更新远程引用。忽略的 dist 保留默认的清理选项。
准备准确的项目状态
仅使用原始课程存储库。首先保存完整的忽略、暂存和提交。然后创建完整的SCRATCH;它故意位于忽略的scratch/之外,因此默认的干净列表可以显示它。如果练习本机删除,请在演示之外保留单独的副本。
完整的文件输入
仅在下面指定的阶段保存。这些是完整的 UTF-8/LF 正文,最后有换行符;永远不要粘贴 Markdown 栅栏。未更改的可运行文件继承命名输入。单独变体中的版本不得覆盖原始版本。
.gitignore — 忽略
node_modules/
dist/
coverage/
reports/
.course-cache/
*.log
scratch/course-scratch.txt — SCRATCH
Disposable course scratch. No useful work.在GitTree
调色板:Command+Shift+P(在 Ubuntu 上为 Ctrl+Shift+P);输入确切命名的命令并选择它。命名引用操作使用该行的上下文菜单,而不是无参数的调色板快捷方式。
- 调色板 Edit .gitignore… 打开“.gitignore in gittree-features”。单击 Rules, one per line,选择全部,然后输入(或粘贴)完整的 IGNORE 正文; Save。这会写入文件,而不是提交。 (该对话框还具有 Add Template 和 Why is this ignored? 检查路径。)
- 显示工作变化;仅审查 .gitignore,阶段文件;摘要杂务:忽略生成的课程文件;对 1 个文件提交一次更改。
- 新建文件… → course-scratch.txt → 创建;保存精确的 SCRATCH,无需分段。确认它未被追踪。
- 运行下面的本机路径范围的试运行。如果列出任何不同的路径,请在删除之前停止。
- 调色板 Clean Untracked Files… 打开“清理 gittree-features 中未跟踪的文件?”。它读取“1 个文件,0 个文件夹(0 个被忽略),43 B”并列出 course-scratch.txt;在列表下方,它表示在删除任何内容之前,每个列出的文件的恢复快照都会保存在 refs/ogt/trash 下,并且“撤消”会将文件放回没有新内容取代的位置。
- 关闭“包括未跟踪的文件夹”、“包括忽略的文件”和“仅忽略的文件”。预期候选者仅为 course-scratch.txt;如果出现有用的工作则取消。
- 选择删除 1 项一次并等待实际结果。应用程序首先保护字节;在要求撤消之前捕获该证据。
- 验证干净状态并忽略 dist/index.html。不要删除快照或启用忽略清理来美化视图。
对于每个普通提交:Summary 是规定的主题;描述为空;修改先前的提交、跳过挂钩、添加签署者、不同的作者、提交后推送以及允许空提交;没有共同作者。仅暂存指定的文件,然后将更改提交到 N 个文件一次(文件为一个),或者使用 Command+Enter 作为替代方案。等待真正的结果。明确修改的课程仅更改所述选项。
在航站楼
先保存忽略;本机提交替代方案:
git add -- .gitignore
git commit --quiet -m "chore: ignore generated course files"
git check-ignore dist/index.html观察到的输出:
dist/index.html仅在提交后创建精确的 SCRATCH,如果需要,将其保留在外部,然后:
git clean -n -- course-scratch.txt观察到:
Would remove course-scratch.txt仅在确认此一次性路径后,本机替代方案(不是在应用程序成功后):
git clean -f -- course-scratch.txt
git status --short观察到的去除:
Removing course-scratch.txt状态沉默。此本机 -f 仅限于指定的一次性文件,而不是 -fdx 或广泛的清理。 Native Git 没有制作应用程序快照。更改输入的非变异预览,因为它们在单独的副本中运行: git clean -n -X 不打印任何内容,因为没有 -d Git 不会进入被忽略的 dist/ 文件夹;出于同样的原因,git clean -n -x 仅列出了 course-scratch.txt; git clean -n -x -- course-scratch.txt dist/index.html,命名两个路径,列出两个路径。命名路径可以扩大范围。切勿用任何扩展的破坏性形式代替范围内的删除。
结果
Where you end: Main 有杂务:忽略生成的课程文件提交 I8 并完全忽略;显式清理、工作/索引清理、忽略 dist、标记/服务器引用未更改后,course-scratch.txt 不存在。
常见错误
- 假设被忽略的跟踪文件留下历史记录。
- 使用 -x 或 app 忽略选项而不进行范围审查。
- 期望本机清理有应用程序撤消。
如果出现问题
如果预览不同则取消。本机删除需要单独的保留文件来恢复;应用程序撤消取决于真实快照/日志和当前路径,而不是涵盖任何删除的承诺。
检查你的理解情况
回答每个问题,然后阅读原因。标记为“必填”的问题将有助于完成本课程。
0 个(共 6 个)正确
正确回答所需的问题以完成课程。
在此浏览器中检查。
练习
验证 IGNORE 已提交、scratch 不存在且 dist 被忽略。仅在单独的预览中,使用 -X 与 -x 预测出现哪些被忽略的候选者,而不删除它们。
您自己的确认:该网站无法看到您的计算机。
要完成本课程,请正确回答所需的问题并确认实践练习。
回顾
- 忽略并不是取消跟踪。
- 清洁范围是明确的。
- 恢复取决于保留的字节。
有关的
术语表介绍
忽略 — ཁགག་;清洁 — 清洁;未追踪 — ¡恢复快照 — 恢复快照。
视频文字记录
视频的旁白,逐条提示。
显示成绩单
- 从确切的检查点开始。
- 命名分支、索引 和工作版本。
- 仅准备单独的课程副本。
- 保存确切的共享忽略策略。
- 仅提交忽略文件。
- 保留暂存文件 故意不追踪。
- 首先预览确切的命名路径。
- 阅读每一个移除候选者。
- 不要扩大清洁选项。
- 仅取出一次性文件夹。
- 验证保留的内容 以及消失的东西。
- 是否忽略删除跟踪历史记录?
- 规则隐藏了未跟踪的候选人; 他们不会改写历史。
- 范围清洁后还剩下什么?
- 仅指定未跟踪的暂存 通过这些选项被删除。
- 清理是否会产生新的提交?
- 该操作删除磁盘 索引之外的字节。
- 更改输入以包含 忽略的文件:范围?
- 扩大的选择改变了候选人; 行动前再次预览。
- 本机干净运行。应用撤消有保证吗?
- 本机清理不会创建 GitTree 日志或未跟踪内容备份。
- 什么证明了预期的清洁?
- 检查已移除和保留的情况 状态与命名查询。
- 验证实际结果, 不仅仅是一条消息。
- 在行动之前预测改变的输入。
- 在恢复之前保留有用的工作。
- 在继续之前证明检查点。
- 保留验证结果 以便下一步。