如何在编辑稀疏结账后让git下载新文件夹?

时间:2017-03-27 12:03:47

标签: git sparse-checkout

我有一个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子文件夹,这很好。我知道稀疏检查仍然会拉下物体。

我现在希望获得themes/theme15的副本,以进行一些更改。所以,我编辑.git/info/sparse-checkout因此:

themes/theme1
themes/theme8
themes/theme15

然后做了git pull dreamhost master,认为git会在themes下添加theme15文件夹。但是,没有任何反应 - 它只是说

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

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

谢谢,Max

编辑:这是git version 2.8.1 btw

3 个答案:

答案 0 :(得分:5)

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

git read-tree -mu HEAD

答案 1 :(得分:0)

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

进行更改后我需要做

git checkout themes/theme15

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

答案 2 :(得分:0)

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

从git 2.27开始它仍处于实验阶段,因此可能会更改确切的功能和语法。

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