Git Clone:请只提供这些文件?

我想克隆一个GIT仓库, .git是以.git目录结束。 换句话说,我只是想要这些文件。 有没有办法做到这一点?

git clone --no-checkout与我想要的完全相反(只给了我.git目录)。

我试图做一个远程回购,而不是本地的,这意味着这不是一个重复的“如何做一个”git导出“(如”svn导出“)(即使解决方案可能最终成为相同)。


git命令将与你正在寻找的最接近的地方是git archive
请参阅备份使用git的项目:它将在档案中包含所有文件(包括使用git-archive-all脚本的子模块)

然后你可以在任何地方使用这个压缩文件,只提供文件,不需要.git目录。

git archive --remote=<repository URL> | tar -t

如果你需要从第一级开始的文件夹和文件:

git archive --remote=<repository URL> | tar -t --exclude="*/*"

仅列出远程回购的第一级文件夹:

git archive --remote=<repository URL> | tar -t --exclude="*/*" | grep "/"

注意:这对GitHub不起作用(不支持)

所以你需要克隆(浅层加快克隆步骤),然后在本地存档:

git clone --depth=1 git@github.com:xxx/yyy.git
cd yyy
git archive --format=tar aTag -o aTag.tar

另一个选择是做一个浅层克隆(如下所述),但在其他地方找到.git文件夹。

git --git-dir=/path/to/another/folder.git clone --depth=1 /url/to/repo

repo文件夹只包含文件,不包含.git

注意: git --git-dirgit命令的一个选项,而不是git clone


更新Git 2.14.X / 2.15(2017年第4季度):它将确保避免添加空文件夹

git archive ”,尤其是与pathspec一起使用时,在其输出中存储了一个空目录,即使Git本身从不这样做。
这已被修复。

参见RenéScharfe(``)的承诺4318094(2017年9月12日)。
建议:杰夫金( peff )。
(由Junio C gitster合并 - gitster - 2017年9月25日承诺62b1cb7)

archive :不要将空目录添加到归档

虽然git不会跟踪空目录,但git archive可能会被诱骗将其放入档案中。
虽然这是由对象数据库支持的,但它不能在索引中表示,因此不太可能在野外发生。

由于空目录不被git支持,所以它们也不应写入档案中。
如果真的需要一个空目录,那么可以通过在其中放置一个空的.gitignore文件来对其进行跟踪和存档。


git archive --format=tar --remote=<repository URL> HEAD | tar xf -

从这里采取


你可以创建一个浅层克隆来获得最后几个版本:

 git clone --depth 1 git://url

那么要么简单地删除.git目录,要么使用git archive来导出你的树。

链接地址: http://www.djcxy.com/p/26265.html

上一篇: Git Clone: Just the files, please?

下一篇: GIT: Checkout to a specific folder