【问题标题】:Git push to a new remote after shallow clone浅克隆后 Git 推送到新的远程
【发布时间】:2015-02-21 05:55:44
【问题描述】:

可以这样做吗?我有几个分支和不少提交,我正在尝试
git push - --all origin,但我收到了shallow update not allowed

提前致谢。

【问题讨论】:

标签: git github


【解决方案1】:

不,这是不可能的。

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

您只能推送到已经有您丢失的提交的遥控器。

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

【讨论】:

  • 但是可以从本地存储的“浅克隆”中进行克隆。那么为什么在遥控器上可以推送的内容有限制呢?
  • @ceztko,克隆没问题,就像复制你拥有的任何东西一样。当你推动时,可能会遇到最终结果没有共同祖先线的情况。重复的stackoverflow.com/questions/6900103/… 有一些很好的 ASCII 图像,用于解决其中一个答案中的潜在问题。
  • 我认为这个问题提到了向/从完整历史存储库推/拉的问题,这是一个已删除的限制,因此它不是一个完全重复的问题。在这里,我们谈论的是稍有不同的东西,即使用 push 在远程重新创建本地存储的浅层克隆,由于您提到的原因,这似乎确实是不可能的,但它似乎也是一个可以放宽的限制。
  • @ceztko,我同意;我可以看到“-f”行为,你只是强迫它做你想做的事。我认为对于git 开发人员来说风险太高了(或者只是被忽视了......)。
猜你喜欢
  • 2012-07-07
  • 2021-05-31
  • 2019-08-03
  • 2018-12-02
  • 2020-07-04
  • 1970-01-01
  • 2017-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多