我在Git版本控制下有一个项目,我在一台服务器和我的本地计算机上工作。我最初将远程源设置为我的本地计算机,但现在我想将其更改为BitBucket。
在服务器上,我使用了以下命令
git remote set-url origin bitbucket_address
但现在,当我试图推动我的项目时,我得到了错误
! [remote rejected] master -> master (shallow update not allowed)
是什么导致了这一问题,我如何修复它?
vuv7lop31#
看起来您已经使用git clone --depth <number>克隆了您的本地版本。这导致了一个“浅层克隆”。这种克隆的一个限制是您不能将其推送到新存储库中。
git clone --depth <number>
您现在有两个选择:
1.如果你不在乎你丢失的历史,看看this question1.如果你想保留你的全部历史,那么继续阅读:
所以,你想保留你的历史,是吗?这意味着您必须对您的存储库进行“浅显”。为此,您需要重新添加旧遥控器。
git remote add old <path-to-old-remote>
之后,我们使用git fetch从旧遥控器获取剩余的历史记录(如this answer所示)。
git fetch
git fetch --unshallow old
现在,您应该能够推送到新的远程存储库中。
注意:在去剥离你的克隆之后,你显然可以再次移除旧的遥控器。
d8tt03nd2#
如果您的回购为origin,原始回购为upstream:
origin
upstream
git fetch --unshallow upstream
5hcedyr03#
如果您想将repo与您在浅层初始提交后添加的新提交保持原样,则另一个选项是:使用交互式rebase修改此提交。
git rebase --interactive --root
pick
edit
如果您克隆了深度大于1的repo,则可能需要对所有这些提交执行相同的操作。或者,可替换地,在交互重新基址期间对所有这些执行fixup。
fixup
git commit --amend --no-edit
这还将更改提交ID,并将您添加为此初始提交的共同作者。
git rebase --continue
eqqqjvef4#
如果您想按原样推送新的回购,您可以尝试这样做:
old git folder
sudo rm -rf .git
git init
git remote add origin your-new-repo
lyfkaqu15#
如果取回--不浅不起作用。你们的分公司一定是出了什么问题。在按下它之前,使用以下命令修复它。
git filter-branch -- --all
只有在--不浅的情况下才能做到这一点,因为存在安全问题。
m4pnthwp6#
我修复了这个问题。但也许你无法修复它。解决方案如下。
1.从git中获取浅层文件,如Common/.git/shlow1.将此文件推送到git服务器中的.git目录。1.将您的分支推送到git服务器。
在我的公司,我需要IT管理员添加文件,但我没有权限。
6条答案
按热度按时间vuv7lop31#
看起来您已经使用
git clone --depth <number>
克隆了您的本地版本。这导致了一个“浅层克隆”。这种克隆的一个限制是您不能将其推送到新存储库中。您现在有两个选择:
1.如果你不在乎你丢失的历史,看看this question
1.如果你想保留你的全部历史,那么继续阅读:
所以,你想保留你的历史,是吗?这意味着您必须对您的存储库进行“浅显”。为此,您需要重新添加旧遥控器。
之后,我们使用
git fetch
从旧遥控器获取剩余的历史记录(如this answer所示)。现在,您应该能够推送到新的远程存储库中。
注意:在去剥离你的克隆之后,你显然可以再次移除旧的遥控器。
d8tt03nd2#
如果您的回购为
origin
,原始回购为upstream
:5hcedyr03#
如果您想将repo与您在浅层初始提交后添加的新提交保持原样,则另一个选项是:使用交互式rebase修改此提交。
pick
更改为edit
并保存并关闭文件。如果您克隆了深度大于1的repo,则可能需要对所有这些提交执行相同的操作。或者,可替换地,在交互重新基址期间对所有这些执行
fixup
。这还将更改提交ID,并将您添加为此初始提交的共同作者。
eqqqjvef4#
如果您想按原样推送新的回购,您可以尝试这样做:
old git folder
,sudo rm -rf .git
git init
git remote add origin your-new-repo
lyfkaqu15#
如果取回--不浅不起作用。你们的分公司一定是出了什么问题。在按下它之前,使用以下命令修复它。
只有在--不浅的情况下才能做到这一点,因为存在安全问题。
m4pnthwp6#
我修复了这个问题。但也许你无法修复它。解决方案如下。
1.从git中获取浅层文件,如Common/.git/shlow
1.将此文件推送到git服务器中的.git目录。
1.将您的分支推送到git服务器。
在我的公司,我需要IT管理员添加文件,但我没有权限。