深度克隆后向新的远程仓库推送 Git

7

这样做有可能吗?我有几个分支和很多提交记录,我尝试执行以下命令:git push --all origin但是出现了shallow update not allowed的错误提示。

提前感谢您的帮助。


可能是为什么无法从浅克隆中推送?的重复问题。 - eckes
第二个可能的重复:https://dev59.com/nmgu5IYBdhLWcg3wYF-3 - eckes
似乎在最近的版本中已经解决了:https://dev59.com/W2w05IYBdhLWcg3w6GLH#21217267 - eckes
5
我认为我的问题与众不同,因为我正在尝试将代码推送到一个新的远程仓库,而不是从原始仓库克隆出来后直接推送。 - arduima
1
@eckes,这些链接都没有回答这个问题。 - YPCrumble
1个回答

0

不可能。

拥有一个影子克隆意味着您存储库中的最旧提交是“反向悬挂”的,即它们指向您没有的父提交。这使得您的数据结构无效,因为git通常强制执行完整的历史记录 - 它会忽略您要求它进行浅克隆的问题,但仍然存在问题。

您只能推送到已包含您缺少的提交的远程仓库。

因此,您的解决方案是取消浅克隆,然后将其推送到新存储库中。或者,如果您想避免在自己的存储库中拥有所有这些历史记录,则可以从自己的上游创建新存储库(希望不是浅的),而不必触及自己的存储库,然后将其推入其中。


但是从本地存储的“浅克隆”中克隆是可能的。那么为什么在远程推送时有限制呢? - ceztko
@ceztko,克隆没有问题,这就像复制你所拥有的任何东西一样。当你推送时,可能会遇到一个没有共同祖先线的情况。在一个答案中,重复的https://dev59.com/-Gw05IYBdhLWcg3w_WxN具有一些良好的ASCII图像,用于说明潜在的问题。 - AnoE
我认为这个问题提到的是关于将代码推送/拉取到/从完整历史仓库的问题,这是一个已经被移除的限制,因此它不是一个完全重复的问题。在这里我们谈论的是稍微不同的事情,即使用push在远程重新创建本地存储的浅克隆,这似乎确实是不可能的,因为你提到的原因,但它也似乎是可以放宽的限制。 - ceztko
@ceztko,我同意;我可以看到“-f”行为,你只需强制它做你想做的事情。我认为风险对于git开发人员来说太高了(或者只是被忽视了...)。 - AnoE

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