要在 Mac 上的现有稀疏检出中添加一个目录,请打开终端,前往仓库根目录,然后运行 git sparse-checkout add 'path/to/directory'。Git 会将该目录下被跟踪的文件显示在工作树中,同时保留其他稀疏检出选择。如果仓库尚未启用稀疏检出,请使用 git sparse-checkout set --cone 'path/to/directory' 启用 cone 模式并选择该目录;这会设置选择范围,因此可能会从工作树中移除其他被跟踪的文件。
运行命令之前
稀疏检出会更改哪些被跟踪的文件出现在仓库的工作树中。所选区域之外的文件仍由 Git 跟踪;它们不会从仓库的历史记录中删除。在默认的 cone 模式下,Git 会包含所选目录下的所有内容,加上其父目录和仓库根目录中直接包含的文件。这意味着添加一个嵌套目录也可能会使临近的顶层或父级文件变得可见。Git sparse-checkout 手册
打开终端并检查 Git 是否可用,然后进入仓库。例如,将示例路径替换为您检出仓库的实际位置:
git --version
cd "$HOME/Projects/sample-repo"
git status --short
在未安装 Git 命令行工具的 Mac 上,调用 git 可能会提示您安装 Apple 的 Command Line Tools。按照 macOS 的提示操作,然后再次运行 git --version。Apple:安装命令行工具(Command Line Tools)
在更改稀疏选择之前,使用 git status --short 检查本地更改。妥善保护重要的未提交或未跟踪的工作,尤其是当它位于可能被排除的目录中时。请在仓库内运行 sparse-checkout 命令,并使用相对于仓库根目录的路径。如示例中所示,为包含空格或 shell 元字符的路径加上引号,以便 zsh 或 bash 将该路径作为单个参数传递给 Git。
向现有稀疏检出中添加目录
如果已启用稀疏检出,请使用以下命令添加目录:
git sparse-checkout add 'Packages/Map View'
将 Packages/Map View 替换为该目录在仓库中显示的路径。在 cone 模式下,这会将该目录添加到当前选择中,而不是替换其他已选目录。根据 Git 文档说明,add 需要已存在的稀疏检出;它会更新选择范围和工作树。Git sparse-checkout 命令参考
随后如需检查已选择的目录,请运行:
git sparse-checkout list
git status --short
该列表会显示稀疏检出的目录。状态(status)有助于您查看已跟踪或未跟踪的文件是否已被修改;它不会仅仅因为被省略的跟踪文件位于稀疏选择范围之外而将其显示为已删除。
如果这是常规检出
如果您希望将完整检出转换为包含指定目录的稀疏检出,请使用 set:
git sparse-checkout set --cone 'Packages/Map View'
set 会根据您提供的路径建立稀疏选择。它不会将常规完整检出中的其他目录作为额外选择保留下来。如果您需要多个目录,请在同一个命令中包含每一个目录,例如 git sparse-checkout set --cone 'Packages/Map View' 'Docs'。Git sparse-checkout 命令参考
更改选择可能会从工作树中移除文件。Git 文档还指出,在更改 cone 模式选择时,它可能会删除那些不再包含跟踪文件或未忽略的未跟踪文件的目录中的被忽略文件。在运行 set 之前,请检查状态并备份保护您所需的任何本地文件;如果 Git 警告未跟踪的文件阻碍了清理,请检查这些文件,而不是强行移除。Git sparse-checkout 手册
如果 Git 报错
如果 git sparse-checkout add 提示仓库未处于稀疏检出状态,请决定是否打算缩小工作树的范围。若打算缩小,请使用上面的 set --cone 命令。如果您打算保留所有当前目录并仅添加一个目录,请先确认要保留的目录,然后将所有这些目录与新目录一起传递给 set --cone。
如果在添加后某个路径不存在,请根据仓库中已跟踪的路径核对拼写和大小写,并检查它是否存在于当前分支上。稀疏检出选择的是已跟踪的路径;它不会自动创建缺失的目录或初始化子模块(submodule)。Git 文档将子模块初始化列为单独的操作。Git sparse-checkout 手册
稀疏检出控制的是 Git 将哪些文件放入工作树中;这与仅克隆某个目录或从仓库中删除其他目录不同。Git 支持用于限制从服务器下载的对象的独立部分克隆(partial-clone)过滤器,但其可用性和效果取决于克隆及服务器配置。git clone --sparse 选项以顶层文件开始,是进行新克隆的另一种工作流。Git clone 文档
参考来源
Git - git-clone 文档 — Git
安装命令行工具(Command Line Tools) — Apple