执行克隆时是否有传递给git
的标志,比如不克隆.git
目录?如果没有,克隆后删除.git
目录的标志怎么样?
答案 0 :(得分:192)
使用
git clone --depth=1 --branch=master git://someserver/somerepo dirformynewrepo
rm -rf ./dirformynewrepo/.git
dirformynewrepo
不再是Git存储库。答案 1 :(得分:26)
由于您只需要这些文件,因此您无需将其视为git repo。
rsync -rlp --exclude '.git' user@host:path/to/git/repo/ .
并且这仅适用于本地路径和远程ssh / rsync路径,如果远程服务器仅提供git://或https:// access,则它可能无效。
答案 2 :(得分:11)
或者,如果您安装了Node.js,则可以使用以下命令:
Queue<int> q;
q.enQueue(12345);
q.enQueue(67890);
q.printListForward();
npx degit GIT_REPO
是Node附带的,它允许您运行基于二进制节点的二进制程序包而无需先安装它们(或者,您可以先使用npx
在全局安装degit
)。
Degit是由Svelte and Rollup的创建者Rich Harris创建的工具,他使用该工具通过克隆存储库而不保留git文件夹来快速创建新项目。但是它也可以用于一次克隆任何回购...
答案 3 :(得分:0)
你可以随时
git clone git://repo.org/fossproject.git && rm -rf fossproject/.git
答案 4 :(得分:0)
对于那些怀疑 the --depth 1
solution 的人,因为它仍然下载 .git
目录并且您之后需要手动删除它,也许您需要知道 how git actually works。
当您通常克隆一个 repo 时,git 将您的所有文件(跨提交)下载到 .git
目录中。当您使用 --depth 1
进行克隆时,git 只会将文件的最新版本下载到 .git
。之后,git 将 checkout
或从 .git
检索这些文件到工作目录中(不再下载)。
而且通常情况下,由于 .git
中的文件对象是压缩的,通过使用 git clone --depth 1
下载文件而不是下载未压缩的文件,您可以节省更多带宽。对于某些网速较慢的人来说,这是值得的(需要运行 rm -rf
)。
我个人认为 the git archive
solution 更好,但由于 GitHub 不支持它,--depth 1
是要走的路。