Git clone只是一个子目录,位于当前目录

时间:2015-05-14 14:15:41

标签: git directory git-clone sparse-matrix

我的Git仓库上有几个文件夹:

folder1/suba
folder2/subb
folder3/subc

在本地我在我的网络服务器上有公共文件夹。

http://domain.com/ 

指向该文件夹

~/apps/appname/public

我想有效地对服务器上的folder3/subc文件夹执行public的git克隆。现在我知道稀疏结账,但保留了文件夹层次结构(如~/apps/appname/public/folder3/subc)。

我不想要那个层次结构,并希望将folder3 / subc的内容直接签出到公共文件夹中。

这可能吗?

2 个答案:

答案 0 :(得分:1)

如果~/apps/appname/public位于共享文件系统上,并且您的网络服务器未更改签出文件,则可以维护其内容的专用索引,并使用git read-tree -um更新文件系统你喜欢的任何提交:

( 
  export GIT_INDEX_FILE=/path/to/repo/.git/appname-public-manifest
  export GIT_WORK_TREE=~/apps/appname/public
  git read-tree -um `git write-tree` master:folder3/subc
)

git write-treegit read-tree写一个树进行检查,并且读取树将现在的内容和指定树中的内容之间的差异应用于索引和工作树。

如果该目录中没有任何内容,则无需初始化,否则

( 
  export GIT_INDEX_FILE=/path/to/repo/.git/appname-public-manifest
  export GIT_WORK_TREE=~/apps/appname/public
  git read-tree --empty   # start from nothing
  git add .               # index what's there now
)

将设置清单以匹配已存在的清单。

答案 1 :(得分:0)

您无法克隆子目录。但是,您可以创建浅克隆。这种浅克隆仅适用于部署。

意味着您无法使用这些克隆进行提交,拉动,推送和变基。浅克隆可帮助您减少克隆大小足迹