如何只克隆Git存储库的子文件夹并使子文件夹中的所有文件最终都在根目录中?

时间:2014-05-23 15:43:46

标签: git

我意识到之前已经问过类似的问题:How do I clone a subdirectory only of a Git repository?但是我无法找到我的具体问题的答案,所以请不要将其标记为重复。

我的repo中有一个名为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

2 个答案:

答案 0 :(得分:3)

这里有git checkout个任意树。有一个你打电话给scratchpad的分支,你的内容可能偶尔会为后人记录。

git checkout scratchpad
git read-tree -um --aggressive `git write-tree`: anycommityoulike:statics

任何时候,如果想要覆盖worktree内容并且你不在乎,请将-um更改为-u并在之后执行git checkout -f

编辑:只是在我们已经在那里结帐时。

答案 1 :(得分:0)

我认为这是不可能的:稀疏结账机制不是文件重定位工具。正如您在使用稀疏结账时所解释的here,Git仅对为索引文件中的条目设置的特殊位进行操作。它不会重新定位任何东西。