我有以下(单(回购结构
└── dir1
├── subdir1
│ ├── subdir1a
│ ├── subdir1b
│ └── subdir1c
└── subdir2
├── subdir2a
├── subdir2b
├── subdir2c
└── dir2
└── dir3
我想签出除(例如(subdir1b
和subdir1c
之外的所有。
有没有一种方法可以对所有执行稀疏检查,除了一些子目录?
询问是因为也许(如果有这样的解决方案(更容易向git
说明你做了什么而不想结账,而不是开始列出所有要结账的东西。
假设您使用的是Git 2.25+git sparse-checkout
命令,我刚刚测试了:
C:Usersvoncgit>git clone --filter=blob:none --no-checkout https://github.com/git/git git2
Cloning into 'git2'...
remote: Enumerating objects: 200317, done.
remote: Total 200317 (delta 0), reused 0 (delta 0), pack-reused 200317
Receiving objects: 100% (200317/200317), 74.10 MiB | 26.40 MiB/s, done.
Resolving deltas: 100% (127965/127965), done.
C:Usersvoncgit>cd git2
C:Usersvoncgitgit2>git sparse-checkout init
C:Usersvoncgitgit2>git read-tree -mu HEAD
remote: Enumerating objects: 459, done.
remote: Counting objects: 100% (392/392), done.
remote: Compressing objects: 100% (392/392), done.
remote: Total 459 (delta 0), reused 0 (delta 0), pack-reused 67
Receiving objects: 100% (459/459), 1.88 MiB | 9.14 MiB/s, done.
结果是一个没有子文件夹的存储库。
让我们开始添加除Documentationtechnical
之外的所有子文件夹
# edit .gitinfosparse-checkout
/*
!/Documentation/technical/
# ... Add your other excluded folders
C:Usersvoncgitgit2>git sparse-checkout reapply
最终结果是所有git/git
存储库,没有Documentation/technical/