我已经收到了一个可以使用的裸git存储库 - 让我们称之为 bare.git 。
我已将其保存到 D:/workspace/bare.git 并克隆了它
$git clone bare.git bare
一切正常,直到我想推动我的改变。我收到了以下git错误
$git push
error: failed to push some refs to 'D:/workspace/bare.git'
$git push origin master
error: failed to push some refs to 'D:/workspace/bare.git'
从我的角度来说,一切都设置得很好,但我仍然无法弄清楚为什么我不能推动任何东西。
$git remote show origin
remote origin
Fetch URL: D:/workspace/bare.git
Push URL: D:/workspace/bare.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
这是我的.git / config
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
url = D:/workspace/bare.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
是的 - 裸存储库的主分支中已经有一些提交。
有什么想法吗?
答案 0 :(得分:2)
当您的本地更改(提交历史记录)干扰服务器历史记录时,它可能无法推送。例如,当您克隆回购时,历史记录看起来像A - > B - > C然后您做了一个更改,使提交历史记录看起来像:A - > B - > C-- > d。与此同时,如果有人推送到服务器,使用提交E,服务器上的历史记录将看起来像A - > B - > C - > D - > E
在这种情况下,你不会被允许推动。
你可以
从服务器拉出,然后尝试按
强制推送 - 不推荐,因为它会改变服务器提交历史记录。