要在 Mac 上将生成的文件与源代码分开,请在仓库内创建一个专用的输出文件夹,然后将该文件夹添加到仓库的 .gitignore 文件中。访达(Finder)可帮助您创建和检查文件夹;Git 的忽略规则可防止生成的文件进入未来的提交。此方法适用于 Git 尚未跟踪的文件,因此在依赖它之前请先检查仓库状态。

在访达中创建输出文件夹

在访达中打开仓库文件夹,使用文件 > 新建文件夹或 Shift-Command-N 为生成的输出创建一个文件夹,例如 build 或 dist。将源文件保留在其现有位置,并配置您的构建工具将其输出写入该文件夹。文件夹名称必须与工具的实际输出路径匹配;仅创建文件夹并不会重定向构建输出。Apple 在其在 Mac 上的“访达”中整理文件指南中记录了访达的文件夹创建步骤。

如果您不确定哪些文件是生成的,请在移动或排除任何内容之前检查构建工具的配置或项目文档。某些生成的文件是项目所必需的,或者是有意签入的。如果项目需要这些文件,请将它们保留在版本控制下。

将生成的文件夹添加到 .gitignore

在仓库根目录下,使用文本编辑器创建或打开名为 .gitignore 的文件。访达可以创建文件夹和移动文件,但它不提供 Git 忽略控制功能;Git 从 .gitignore 和相关配置中读取忽略模式。为输出目录添加一条规则,使用相对于 .gitignore 文件的实际路径。例如:

/build/

开头的斜杠将此模式锚定在仓库根目录下,末尾的斜杠使其匹配目录。如果生成的输出处于嵌套目录中,请改用其对应路径,例如 /app/generated/。Git 的 gitignore 文档解释了模式匹配,并指出适用于整个项目的规则应放在 .gitignore 中,以便与其他克隆副本共享。

对于不应影响仓库中其他协作人员的本地生成文件夹,请改将其规则添加到 .git/info/exclude 中。Git 将其记录为特定于仓库的 .gitignore 替代方案。当输出是为项目中的每个人生成的,且应为所有贡献者排除时,请使用已提交的 .gitignore 规则。

确认规则并处理已被跟踪的文件

打开终端并切换到仓库目录。检查状态,然后向 Git 查询哪条规则适用于生成的文件路径:

git status --short
git check-ignore -v build/example-file

将 build/example-file 替换为输出文件夹下存在的实际路径。-v 选项会报告匹配的忽略规则以及包含该规则的文件。如果 Git 报告没有匹配项,请确认路径和模式:.gitignore 中的路径是相对于该文件所在位置进行解析的,并且某条规则可能会被另一条匹配规则覆盖。Git 的 check-ignore 参考文档介绍了如何检查忽略匹配项。

忽略规则不会停止跟踪 Git 中已提交或已暂存的文件。Git 明确指出已跟踪的文件不受忽略规则的影响。要从暂存区中移除先前已跟踪的生成文件,同时保留本地副本,请使用带有精确路径的 git rm --cached,然后在提交前查看更改。例如:

git rm --cached build/example-file
git status --short

这只会从 Git 索引中移除指定的文件;它不会自动取消跟踪目录中的所有文件。在提交更改之前,请查看状态输出,特别是当您打算取消跟踪整个输出目录树时。GitHub 忽略文件指南也解释了本地排除项与共享的 .gitignore 规则之间的区别。

使用访达检查名称,而非强制执行 Git 规则

访达可以让文件类型更容易检查:选取访达 > 设置 > 高级,然后启用显示所有文件扩展名。当源文件和生成的文件名称相似时,这有助于区分它们。Apple 指出,扩展名在其他情况下可能会被隐藏,并建议不要仅仅为了更改文件格式而更改文件扩展名。请参阅 Apple 关于在 Mac 上显示或隐藏文件扩展名的说明。

因此,可靠的分工方式是:访达为生成的输出提供一个可见的文件夹,构建工具向其中写入内容,而 Git 忽略规则将符合条件的未跟踪文件排除在版本控制之外。每当项目的构建配置发生更改时,请务必检查实际的输出路径和 Git 状态。

来源