该--depth 1选件git clone:
创建一个浅层克隆,其历史记录被截断为指定的修订数.浅存储库有许多限制(您不能克隆或获取它,也不能从中推送或插入它),但如果您只对历史悠久的大型项目的近期历史感兴趣并且希望将修补程序作为补丁发送.
但是我已经成功完成了一个浅层克隆,提交了一些更改并将这些更改推回到(裸克隆)源.
这对我有意义 - 我的意思是为什么不呢?当克隆的HEAD在原点可识别时,我的提交就在此之上,似乎没有理由.但手册说不然.
我喜欢浅层克隆的想法 - 例如drupal核心:当我从7开始时,我无法知道drupal 4中发生了什么 - 但我不想在脚下射击自己.
那么浅层克隆是否安全,在其中开发提交,再次拉动以跟上来自原点的更新?
有没有办法只从远程Git仓库检索一个特定的提交而不在我的PC上克隆它?远程仓库的结构与我的结构完全相同,因此不会有任何冲突,但我不知道如何做到这一点,我不想克隆那个庞大的存储库.
我是git的新手,有什么办法吗?
该git clone --depth命令选项说
--depth <depth>
Create a shallow clone with a history truncated to the specified number of revisions.
A shallow repository has a number of limitations
(you cannot clone or fetch from it, nor push from nor into it),
but is adequate if you are only interested in the recent history of a large project with a long history,
and would want to send in fixes as patches.
Run Code Online (Sandbox Code Playgroud)
为什么浅克隆有这种限制?为什么它只是一个补丁工作流程?
对于某些项目工作流程,我需要将最新的提交从单个分支传递给编码器,然后让它们能够push(快进)开发到主服务器.这部分是为了安全,知识产权保护和回购规模,部分是为了减少大回购会给天真编码员带来的困惑.是否有允许这样的git工作流程?
更新:根据Karl Bielefeldt的回答,git checkout --orphan …
我有一个大约24MB的repo,但项目中的文件实际上只有2MB左右.我的印象是,使用--depth 1的浅层克隆几乎可以让我接近2MB的实际文件(没有整个回购).
当我做浅层克隆时,新的repo只显示当前分支但是大小相同(24MB)并且用gitx查看repo我可以看到整个历史记录回到初始提交.
我想要一种方法来获取文件的当前状态(用于上传到服务器)而没有所有历史记录.我做错了什么或只是误解了浅层克隆的目的?
我目前正在使用git作为一个大型存储库(大约12 GB,每个分支的大小为3 GB).此存储库包含许多二进制文件(音频和图像).
问题是克隆和拉取可能需要很多时间.特别是"解决增量"步骤可能非常长.
解决这类问题的最佳方法是什么?
我尝试删除增量压缩,因为它在此处使用.gitattributes中的delta选项进行了解释,但它似乎没有改善克隆持续时间.
提前致谢
凯文