我有一个Git版本控制下的项目,我在服务器和本地计算机上工作。我原来有远程起源设置为我的本地计算机,但我现在想把它改为BitBucket。
在服务器上使用该命令
git remote set-url origin bitbucket_address
但是现在当我试图推动我的项目时,我得到了错误
! [remote rejected] master -> master (shallow update not allowed)
是什么导致了这种情况,我如何解决它?
我有一个Git版本控制下的项目,我在服务器和本地计算机上工作。我原来有远程起源设置为我的本地计算机,但我现在想把它改为BitBucket。
在服务器上使用该命令
git remote set-url origin bitbucket_address
但是现在当我试图推动我的项目时,我得到了错误
! [remote rejected] master -> master (shallow update not allowed)
是什么导致了这种情况,我如何解决它?
当前回答
为了简单地解决这个问题,如果您不关心远程现有的更改,那么按照以下方法进行。
从存储库中删除本地的.git文件夹。 输入git init。 再次添加远程git remote Add origin <REMOTE_URL>。 通过git branch -M main设置主分支。 推送你的更改,然后git推送——set-upstream origin main。
其他回答
似乎你已经使用了git clone——depth <number>来克隆你的本地版本。这将导致一个浅克隆。这种克隆的一个限制是您不能将它推入新的存储库。
你现在有两个选择:
如果你不在乎你丢失的历史,看看这个问题 如果你想保留完整的历史,请继续阅读:
你想保留你的历史,是吗?这意味着您必须对存储库进行非浅化。如果你已经移除或更换了旧的遥控器,那么你需要重新添加它:
git remote add old <path-to-old-remote>
之后,我们使用git fetch从旧的远程获取剩余的历史记录(正如这个答案所建议的那样)。
git fetch --unshallow old
现在您应该能够将数据推入新的远程存储库。
注意:在移除你的克隆后,你可以删除旧的遥控器。
我解决了这个问题。但也许你无法修复它。解决方法如下。
从git中获取shallow文件,比如common/.git/shallow 把这个文件推到git服务器的。git目录下。 将分支推到git服务器。
在我的公司,我需要IT管理员添加文件,我没有权限。
如果是bitbucket管道
这可能是由于提交深度有限(默认50提交)
你可以增加限制
clone:
depth: 500 # include the last five hundred commits
pipelines:
default:
- step:
name: Cloning
script:
- echo "Clone all the things!"
注:使用深度:满为不限
为了简单地解决这个问题,如果您不关心远程现有的更改,那么按照以下方法进行。
从存储库中删除本地的.git文件夹。 输入git init。 再次添加远程git remote Add origin <REMOTE_URL>。 通过git branch -M main设置主分支。 推送你的更改,然后git推送——set-upstream origin main。
如果你的回购是原点,而原始回购是上游:
git fetch --unshallow upstream