Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 使用--depth 1浅克隆、创建提交并再次拉取更新是否安全?_Performance_Git_Git Clone - Fatal编程技术网

Performance 使用--depth 1浅克隆、创建提交并再次拉取更新是否安全?

Performance 使用--depth 1浅克隆、创建提交并再次拉取更新是否安全?,performance,git,git-clone,Performance,Git,Git Clone,--depth 1选项位于: 创建一个浅层克隆,其历史记录被截断为指定的修订数。浅层存储库有许多限制(您不能克隆或从中获取,也不能从中推送或插入),但如果您只对具有长期历史的大型项目的最近历史感兴趣,并且希望以补丁的形式发送修复,则浅层存储库就足够了 但是我成功地完成了一个浅层克隆,提交了一些更改,并将这些更改推回到(裸克隆)源 这对我来说很有意义——我是说为什么不呢?当克隆头在源代码中可以识别,并且我的提交位于此之上时,似乎没有理由。但是手册上说的不是这样 我喜欢浅层克隆的想法——例如drup

--depth 1
选项位于:

创建一个浅层克隆,其历史记录被截断为指定的修订数。浅层存储库有许多限制(您不能克隆或从中获取,也不能从中推送或插入),但如果您只对具有长期历史的大型项目的最近历史感兴趣,并且希望以补丁的形式发送修复,则浅层存储库就足够了

但是我成功地完成了一个浅层克隆,提交了一些更改,并将这些更改推回到(裸克隆)源

这对我来说很有意义——我是说为什么不呢?当克隆头在源代码中可以识别,并且我的提交位于此之上时,似乎没有理由。但是手册上说的不是这样

我喜欢浅层克隆的想法——例如drupal core:当我从7开始时,我不需要知道drupal 4中发生了什么。-但我不想射中自己的脚


因此,浅层克隆、在其中开发提交、再次拉取以跟上源站的更新是否安全?

查看我类似问题的一些答案以及git列表上最近线程的链接

归根结底,回购协议之间的“深度”度量是不一致的,因为它们是从各自的头部来度量的,而不是(a)你的头部,或者(b)你克隆/获取的提交,或者(c)你想做的其他事情

最困难的一点是让一个人的用例正确(即自我一致),这样分布式的,因此可能是不同的回购协议仍然可以愉快地一起工作

它看起来确实像是“签出-孤立”是正确的“设置”阶段,但仍然缺乏关于“克隆”步骤的清晰(即简单易懂的单行命令)指导。相反,看起来你必须
init
a repo,建立一个
remote
跟踪分支(你只想要一个分支吗?),然后
fetch
那一个分支,这让人觉得冗长,出错的机会更多

编辑:有关“克隆”步骤,请参见

注意Git 1.9/2.0(2014年第1季度)已删除该限制。
见,摘自:

现在git支持从浅层克隆或到浅层克隆的数据传输,这些限制不再适用

委员会:

--深度::
创建一个“浅”克隆,其历史记录被截断为指定的修订数

它源于提交,支持克隆、发送包/接收包以及浅层克隆。

所有详细信息均在“”中

2015年6月更新:
(最终浅层情况)


2016年1月更新:Git 2.8(Mach 2016)现在正式记录了获取最低历史记录的实践。
参见(2015年12月30日),(2015年12月30日),(2015年12月29日)和(2015年12月28日).
(于2016年1月20日被合并)

这是“

通过指定开关创建

稍后可使用开关更改深度,或使用
--unshallow
恢复完整历史记录

只要合并基础在最近的历史记录中,在
中进行合并就可以工作。
否则,这就像合并不相关的历史,可能会导致巨大的冲突。
此限制可能使此类存储库不适合在基于合并的工作流中使用

2020年更新:

  • git 2.11.1引入了选项
    git fetch--shallow exclude=
    ,以防止获取所有历史记录
  • git 2.11.1引入了选项
    git fetch--shallow-since=
    ,以防止获取旧提交

有关浅克隆更新过程的详细信息,请参阅“”


评论如下:

要回填历史记录:
git pull--unshall

并补充说:

要回填部分历史记录,请执行以下操作:
git fetch--depth=100


是的,我也读过了,谢谢安迪。
--孤儿
的概念似乎很相似,我打算玩一场。仍然有点不安的是,这些文档与现实不符[因为谁能说
--orphan
的文档是正确的?!]发现了另一个。但这对我没有帮助。Git 1.9(2014年第1季度)将完全支持浅层回购克隆!请参阅Git 2.5(2015年第2季度)支持单个获取提交!我已经编辑了我的答案,参考了菲利普。获取远程分支仍将在整个历史记录中进行(AFAIK)。你关于相对深度的说法是对的,我真的希望历史上有一个合适的点(比如我的例子中的git merge base 7.x 7.0)@artfulrobot:“--orphan”方法允许你创建一个短的窄“克隆”(即聚焦的片段),然后像使用正确的repo一样使用它。这是我还没有在愤怒中尝试过的东西,但这是我需要尽快证明的东西。这么多的文字只是为了说“是的,只要你的git版本还没有4年以上的历史,并且合并基础是在最近的历史中”@Boris这个答案对我帮助很大,因为我对使用浅克隆持怀疑态度。以前,当我执行提交和合并时,它有时会中断。这个答案是一个简短的历史,说明了为什么它现在可以在发生时工作,以及如何正确地执行。我的要求是,在浅层克隆之后,我需要将此代码提交到一个新的远程存储库。。我不能允许它,因为这个代码太大了。。如何在没有任何问题的情况下将此浅层克隆推送到新的repo(当前面临浅层对象更新失败的问题)。。有什么想法吗pls@Tiny我建议使用一个单独的本地存储库,它将引用您的浅层克隆文件夹。你能问一个单独的问题吗?
--depth <depth>::