Git 只拉取代码库中的特定目录或文件

2,157 阅读2分钟

具体方法如下:

拉取代码库的所有历史提交,但只需要其中的某些目录或文件,可以使用 git sparse-checkout 功能。该功能允许你指定哪些目录或文件应该包含在工作目录中,而忽略其他文件。使用步骤如下:

git sparse-checkout Git <= 2.2.4版本

  1. 新建项目文件夹并初始化git。

    mkdir dir-name
    git init
    
  2. 添加远程仓库。

    git remote add origin 仓库地址
    
  3. 启用 sparse-checkout 功能。

    git config core.sparsecheckout true
    
  4. 指定要拉取目录(例如:admin/user目录)

    echo admin/user/* >> .git/info/sparse-checkout
    
  5. 最后,使用 git pull 命令拉取代码库,可指定拉取分支(如下是master)。

    git pull origin master
    

git sparse-checkout Git 2.2.5版本

在 Git 2.25 版本中,git sparse-checkout 命令被引入作为一种更方便的 sparse checkout 方法。如果你使用的是旧版本的 Git,则可以使用 core.sparsecheckout 配置来实现类似的效果。

  1. 使用 git clone 命令时,可以通过添加 --depth 参数来指定拉取代码库的深度(即历史提交的数量)。通过指定深度,可以减小拉取的数据量。例如,以下命令将只拉取代码库的最近 1 次提交:
bashCopy code
git clone --depth 1 <repository-url>
  1. 如果需要拉取代码库的所有历史提交,但只需要其中的某些目录或文件,可以使用 git sparse-checkout 功能。该功能允许你指定哪些目录或文件应该包含在工作目录中,而忽略其他文件。使用步骤如下:

    1. 在使用 git clone 命令时,添加 --filter=blob:none 参数以启用 sparse-checkout 功能。

      git clone --filter=blob:none <repository-url>
      
    2. 切换到目标分支。

      git switch <branch>
      
    3. 启用 sparse-checkout 功能。

      git sparse-checkout init
      
    4. 添加要拉取的目录或文件。

      git sparse-checkout set <directory-path>
      

      例如,要拉取名为 src 目录下的所有文件和名为 README.md 的文件,可以执行以下命令:

      git sparse-checkout set src/
      git sparse-checkout set README.md
      
    5. 最后,使用 git pull 命令拉取代码库。

      Copy code
      git pull
      

只拉取代码库中的特定目录或文件,从而节省时间和带宽。

注意,使用 git sparse-checkout 功能时,被忽略的目录或文件不会出现在工作目录中。如果你需要恢复这些文件,请执行 git sparse-checkout disable 命令来禁用 sparse-checkout 功能。