更改Git远程URL后,远程拒绝(不允许浅层更新)

我在Git版本控制下有一个项目,我在服务器和本地计算机上工作。 我最初有远程起源设置为我的本地计算机,但我现在想改变到BitBucket。

在服务器上我使用了命令

git remote set-url origin bitbucket_address 

但现在当我尝试推动我的项目时,我得到的错误

  ! [remote rejected] master -> master (shallow update not allowed) 

这是什么原因造成的?我该如何解决?

因为你似乎已经使用git clone --depth <number>克隆你的本地版本。 这导致了一个浅层克隆 。 这样一个克隆的一个限制是你不能从它推入一个新的仓库。

这意味着你不得不放弃你的仓库。 为此,您需要重新添加旧的遥控器。

 git remote add old <path-to-old-remote> 

之后,我们使用git fetch从旧的远程获取剩余的历史logging(正如在这个答案中所build议的那样)。

 git fetch --unshallow old 

现在你应该能够推入你的新的远程仓库。


注意解除克隆之后,您可以明显地移除旧的远程。

如果您的回购是origin ,而原始回购是upstream

 git fetch --unshallow upstream