Git 稀疏结帐仅支持存储库根目录中的文件夹?

Git sparse checkout to only honor a folder at the root of the repo?

我们有一个包含大量项目的回购协议。我只关心 repo 中的 "oracle" 项目。但是,在下拉代码库后,我在其他文件夹中发现了名为 "oracle" 的子目录。有没有办法只抓取匹配的父文件夹?

git init <repo>
cd <repo>
git remote add -f origin <url>

git config core.sparseCheckout true

echo "oracle/" >> .git/info/sparse-checkout

输出

#ls -l
  oracle
  directory123
  directoryabc

#find . | grep "oracle"
  directory123/sub1/sub2/oracle
  directoryabc/sub1/sub2/sub3/oracle

通过将 oracle/ 写入 $GIT_DIR/info/sparse-checkout,您告诉 Git 存储库仅使用文件(如果有)填充工作目录 其父目录称为"oracle"。目录

oracle/
directory123/sub1/sub2/oracle/
directoryabc/sub1/sub2/sub3/oracle/

都满足这个条件

如果您想将 sparse checkout 限制在 oracle 目录,即 在 Git 存储库的根部 ,您需要写,不是 oracle/,而是 /oracle/(注意前导正斜杠)到 $GIT_DIR/info/sparse-checkout.