我有一个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
答案 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开始它仍处于实验阶段,因此可能会更改确切的功能和语法。