我在Git版本控制下有一个项目,我在服务器和本地计算机上工作.我最初将远程原点设置为我的本地计算机,但我现在想将其更改为BitBucket.
在服务器上我使用了命令
git remote set-url origin bitbucket_address
Run Code Online (Sandbox Code Playgroud)
但是现在当我尝试推动我的项目时,我得到了错误
! [remote rejected] master -> master (shallow update not allowed)
Run Code Online (Sandbox Code Playgroud)
造成这种情况的原因是什么?如何解决?
Sas*_*olf 284
因为您似乎已经习惯git clone --depth <number>克隆本地版本.这导致浅克隆.这种克隆的一个限制是你无法从它推入新的存储库.
您现在有两个选择:
那么,你想保留你的历史,嗯?这意味着您必须对存储库进行unhallow.为此,您需要再次添加旧遥控器.
git remote add old <path-to-old-remote>
Run Code Online (Sandbox Code Playgroud)
之后,我们使用git fetch从旧遥控器获取剩余的历史记录(如本答案中所示).
git fetch --unshallow old
Run Code Online (Sandbox Code Playgroud)
现在您应该能够进入新的远程存储库.
注:后unshallowing你的克隆可以很明显的删除旧的远程一次.
Dor*_*ian 19
如果你的回购是origin,原始回购是upstream:
git fetch --unshallow upstream
Run Code Online (Sandbox Code Playgroud)
小智 10
如果你想按原样推送新的仓库,你可以试试这个:
old git folder从您当前的仓库中删除,sudo rm -rf .gitgit initgit remote add your-new-repo如果您希望将存储库与从浅层初始提交以来添加的新提交保持原样,则可以采用以下方法:使用交互式rebase修改此提交。
使用以下命令启动交互式基础,包括第一次(根)提交
git rebase --interactive --root
Run Code Online (Sandbox Code Playgroud)pick将初始提交的更改为,edit然后保存并关闭文件。
如果克隆的存储库的深度大于1,则可能需要对所有这些提交执行相同的操作。或者,也可以fixup在交互式变基期间执行所有这些操作。
使用以下命令将该提交转换为常规的非浅表提交:
git commit --amend --no-edit
Run Code Online (Sandbox Code Playgroud)
这还将更改提交ID,并将您作为共同作者添加到该初始提交中。
别忘了完成基准
git rebase --continue
Run Code Online (Sandbox Code Playgroud)