克隆"浅层"git仓库时出现错误

10

当我执行命令git clone --bare /path/to/repo时,出现了以下错误:

fatal: attempt to fetch/clone from a shallow repository

首先,什么是浅仓库,为什么它不允许我克隆它?


仅供记录,不再限制:https://dev59.com/W2w05IYBdhLWcg3w6GLH#21217267 - Muhammad Hewedy
2个回答

8

将.git/shallow文件改名为其他名称,然后进行克隆操作,之后再将其改回原来的名称,并将.git/shallow文件复制到克隆的代码库中。


6

浅仓库是一种不包含完整历史记录的仓库。

请查看 git-clone手册:

--depth

创建一个浅克隆,其历史记录被截断为指定数量的修订版本。浅仓库有一些限制(您不能从中克隆或提取,也不能将内容推送至其中或者从中推送),但如果您只对具有悠久历史的大型项目的最近历史记录感兴趣,并想要将修复方式发送为补丁,则这是足够的。


谢谢,但问题是我已经“丢失”了原始存储库。是否有可能将我的浅存储库转换为正常存储库? - Olivier Lalonde
1
好的,我删除了.git/shallow文件,现在看起来一切正常。希望这不会有任何问题。 - Olivier Lalonde
1
创建一个新的代码库并将您的代码库导入其中。如果您只有一个浅层次的代码库,那么您已经失去了历史记录,因此将代码重新导入到新的代码库中也不会让您失去任何东西。 - ThiefMaster
你也可以删除.git/shallow文件。不过我不知道这是否会产生任何负面影响。 - ThiefMaster
1
@Oliver:检查您存储库的“root”提交;您可能会发现它认为自己有一个父提交,但是实际上该父提交并不存在于您的存储库中。这很容易引起问题。例如,当我创建一个浅克隆并删除.git/shallow 文件时,git log 会遇到最旧的提交,找不到其父提交,然后退出:fatal: Failed to traverse parents of commit .... - Cascabel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接