在进行克隆时,是否有传递给git的标志,比如不要克隆。git目录?如果没有,那么在克隆完成后使用标记删除.git目录如何?


当前回答

git clone --depth=1 --branch=master git://someserver/somerepo dirformynewrepo1
rd /s /q  .\dirformynewrepo1\.git

这适用于Windows系统

其他回答

你可以一直这样做

git clone git://repo.org/fossproject.git && rm -rf fossproject/.git

Use

git clone --depth=1 --branch=master git://someserver/somerepo dirformynewrepo
rm -rf ./dirformynewrepo/.git

深度选项将确保复制尽可能少的历史记录以获得该回购。 分支选项是可选的,如果没有指定将获得默认分支。 第二行代码将使dirformynewrepo目录不再是Git存储库。 如果要进行递归子模块克隆,则深度和分支参数不适用于子模块。

Git存档——远程已经实现了这个。

或者,如果你安装了Node.js,你可以使用下面的命令:

NPX degit GIT_REPO

npx随Node一起提供,它允许你运行基于二进制节点的包,而不需要先安装它们(或者,你可以先使用npm i -g degit全局安装degit)。

Degit是Rich Harris (slvelte和Rollup的创建者)创建的工具,他使用它通过克隆存储库而不保留git文件夹来快速创建新项目。但它也可以用来克隆任何回购一次…

对于那些怀疑——depth 1解决方案的人,因为它仍然下载.git目录,然后你需要手动删除它,也许你需要知道git克隆实际上是如何工作的。

当你通常克隆一个repo, git下载你所有的文件(跨越提交)到.git目录。当使用——depth 1进行克隆时,git只会将最新版本的文件下载到.git中。之后,git会将这些文件从.git签出或检索到工作目录(不再下载)。

通常情况下,因为.git中的文件对象是压缩的,所以使用git clone—depth 1下载文件会比下载未压缩的文件节省更多带宽。对于一些网速较慢的人来说,这是值得的(需要运行rm -rf)。

我个人认为git存档解决方案更好,但由于GitHub不支持它,——depth 1是正确的选择。