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-dir
是git
命令的一个选项,而不是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
来导出你的树。