Git克隆:只是文件,请?
我想克隆一个GIT仓库, .git
是以一个.git
目录结束。 换句话说,我只是想要的文件。 有没有办法做到这一点?
git clone --no-checkout
与我想要的完全相反(只给了我.git
目录)。
我试图做一个远程回购,而不是本地的,这意味着这不是一个重复的“ 如何做一个”git出口“(如”svn导出“) (即使解决scheme可能最终成为相同)。
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 "/"
另一个select是做一个浅层克隆(如下所述),但在其他地方find.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日) 。
build议: 杰夫·金( peff
) 。
(由Junio C gitster
合并- gitster
-在2017年9月25日的gitster
提交 )
archive
:不要将空目录添加到归档虽然git没有跟踪空目录,但
git archive
可能会被骗入一些档案。
虽然这是由对象数据库支持的,但它不能在索引中表示,因此不太可能在野外发生。由于空目录不被git支持,它们也不应该写入档案。
如果真的需要一个空目录,那么可以通过在其中放置一个空的.gitignore
文件来进行跟踪和归档。
git archive --format=tar --remote=<repository URL> HEAD | tar xf -
从这里采取
你可以创build一个浅层克隆,只获得最后几个版本:
git clone --depth 1 git://url
那么要么简单地删除.git目录,要么使用git archive
来导出你的树。
为什么不执行克隆,然后删除.git
目录,以便只有一个裸工作副本?
编辑:或者实际上为什么要使用克隆呢? 当你说你想要一个git仓库但没有.git
目录时,有点混乱。 如果你的意思是你只是想要一个树状态的副本,那么为什么不在shell中做cp -R
而不是git clone,然后删除.git
。
这听起来像你只是想要一个源代码的副本。 如果是这样,为什么不复制目录并从副本中排除.git目录?