进行克隆时是否有要传递的标志git
,例如不要克隆.git
目录?.git
如果不是,那么在克隆后删除目录的标志怎么样?
问问题
131405 次
5 回答
270
利用
git clone --depth=1 --branch=master git://someserver/somerepo dirformynewrepo
rm -rf ./dirformynewrepo/.git
- 深度选项将确保复制尽可能少的历史记录以获取该存储库。
- 分支选项是可选的,如果未指定,将获得默认分支。
- 第二行将使您的目录
dirformynewrepo
不再是 Git 存储库。 - 如果您正在执行递归子模块克隆,则深度和分支参数不适用于子模块。
于 2012-07-16T04:32:59.567 回答
34
由于您只想要文件,因此不需要将其视为 git repo。
rsync -rlp --exclude '.git' user@host:path/to/git/repo/ .
这仅适用于本地路径和远程 ssh/rsync 路径,如果远程服务器仅提供 git:// 或 https:// 访问,则可能无法正常工作。
于 2012-07-16T03:04:30.783 回答
3
对于那些怀疑解决方案的人,--depth 1
因为它仍然下载.git
目录并且您需要在之后手动删除它,也许您需要知道git clone 的实际工作原理。
当你通常克隆一个 repo 时,git 将你所有的文件(跨越提交)下载到.git
目录中。当您使用 克隆时--depth 1
,git 只会将最新版本的文件下载到.git
. 之后,git 将checkout
或从工作目录中检索这些文件.git
(不再下载)。
并且通常,因为里面的文件对象是压缩的,你会通过下载文件而不是下载未压缩.git
的文件来节省更多的带宽。git clone --depth 1
对于一些网速慢的人来说,这是值得的(需要运行rm -rf
)。
我个人认为该git archive
解决方案更好,但由于 GitHub 不支持它,因此--depth 1
是可行的方法。
于 2021-03-22T16:26:06.387 回答
-1
你总能做到
git clone git://repo.org/fossproject.git && rm -rf fossproject/.git
于 2012-07-16T02:34:17.787 回答