在进行克隆时,是否有传递给git的标志,比如不要克隆。git目录?如果没有,那么在克隆完成后使用标记删除.git目录如何?
当前回答
如果存储库包含一些标记,您可以简单地下载该标记的zip:
curl -L https://github.com/<user>/<repo-name>/archive/refs/tags/v1.2.3.zip | tar xz
这将下载并解压缩克隆的存储库,但没有.git文件夹。生成的文件夹将是<repo-name>-1.2.3
其他回答
你可以一直这样做
git clone git://repo.org/fossproject.git && rm -rf fossproject/.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是正确的选择。
因为您只想要文件,所以不需要将其视为git回购。
rsync -rlp --exclude '.git' user@host:path/to/git/repo/ .
这只适用于本地路径和远程ssh/rsync路径,如果远程服务器只提供git://或https://访问,它可能不起作用。
Git存档——远程已经实现了这个。
Use
git clone --depth=1 --branch=master git://someserver/somerepo dirformynewrepo
rm -rf ./dirformynewrepo/.git
深度选项将确保复制尽可能少的历史记录以获得该回购。 分支选项是可选的,如果没有指定将获得默认分支。 第二行代码将使dirformynewrepo目录不再是Git存储库。 如果要进行递归子模块克隆,则深度和分支参数不适用于子模块。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别