7

我有一个 git repo,我只想下载某些子文件夹。我的配置如下所示:

#.git/config

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    sparsecheckout = true
[remote "dreamhost"]
  url = <repo url>
  fetch = +refs/heads/*:refs/remotes/dreamhost/*
[push]
  default = tracking  

.git/info/sparse-checkout我有这个:

themes/theme1
themes/theme8

这是themes我想要获取的子文件夹中的文件夹。(我不需要其他很多)。

如果我做一个 git/pull 我可以看到 git 获取很多东西,包括themes我不想要的子文件夹,这很好。我知道 sparse-checkout 仍然会拉下对象。

我现在想要一份themes/theme15,进行一些更改。所以,我.git/info/sparse-checkout这样编辑:

themes/theme1
themes/theme8
themes/theme15

然后做了一个git pull dreamhost master,以为 git 会在下添加 theme15 文件夹themes。但是,什么也没发生——它只是说

From <repo url>
 * branch            master     -> FETCH_HEAD
Already up-to-date.

并且文件夹不存在。谁能告诉我我做错了什么?编辑后是否有额外的步骤.git/info/sparse-checkout

谢谢,马克斯

编辑:这是git version 2.8.1顺便说一句

4

4 回答 4

15

在将文件夹添加到我的稀疏结帐文件后,我需要执行的步骤是:

git read-tree -mu HEAD
于 2018-06-12T13:49:11.633 回答
1

刚想出来,我会回答的,以防其他人有同样的问题。

做出改变后,我需要做

git checkout themes/theme15

然后出现文件夹。事后看来也许很明显......(也许不是)。

于 2017-03-27T12:14:11.250 回答
0

从 git 2.25 开始,有一个新命令 ,git sparse-checkout旨在帮助处理这些流程(因此您通常不会编辑.git/info/sparse-checkout文件或core.sparsecheckout手动更改设置)。

从 git 2.27 开始,它仍然是实验性的,因此可能会在确切的功能和语法上发生变化。

文档:https ://git-scm.com/docs/git-sparse-checkout

于 2020-07-08T15:57:36.187 回答
0

这对我有用

git sparse-checkout reapply
于 2022-01-18T18:34:07.253 回答