如何仅克隆Git存储库中的一个子文件夹,并使子文件夹中的所有文件都位于根目录下?

3
我知道之前有类似的问题被提出过:如何仅克隆Git存储库的子目录?。不过,我没有找到针对我的具体问题的答案,请不要将其标记为重复。
我在存储库中有一个名为statics/的子文件夹。我希望该子文件夹中的文件最终出现在本地存储库的根目录中。
我执行了echo statics/ >> .git/info/sparse-checkout,但是当我进行拉取操作时,本地存储库中会出现/statics/file.css。我只想要/file.css
我该怎么做?
已使用命令参考:
git init
git remote add -f https://github.com/xxx/xxx.git
git config core.sparsecheckout true
echo statics/ >> .git/info/sparse-checkout
git pull origin master

一旦您将静态文件的内容提升到根目录,您究竟想要做什么呢? 仅仅获取任意版本的内容就足够了吗(这很容易),还是您需要独立开发并与主项目合作,或者其他什么情况?请描述您所处的情况以及需要完成的任务,而不涉及任何版本控制系统的功能或抽象概念。 - jthill
@jthill 只需要从任意版本中获取内容。它不会独立开发。你有任何想法如何解决这个问题吗? - Kaah
2个回答

3
这里是任意树形结构的git checkout。假设你有一个名为scratchpad的分支,你可能会想要将它的内容记录下来以备后用。
git checkout scratchpad
git read-tree -um --aggressive `git write-tree`: anycommityoulike:statics

如果您不关心覆盖工作目录内容的任何时间,请将 -um 更改为 -u,然后进行 git checkout -f

编辑:在那里时执行检出即可。


0
我认为这是不可能的:稀疏检出机制并非文件重定位工具。正如此处所解释的那样,当您使用稀疏检出时,Git仅会在索引文件中为条目设置特殊标志,它不会重新定位任何东西。

谢谢,这个答案已经足够好了,除非有其他人对如何解决这个问题有不同的想法。 - Kaah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接