Git - 无法在Windows上推送到本地裸仓库

时间:2016-09-26 17:44:52

标签: windows git github git-bare bare

我已经收到了一个可以使用的裸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

是的 - 裸存储库的主分支中已经有一些提交。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

当您的本地更改(提交历史记录)干扰服务器历史记录时,它可能无法推送。例如,当您克隆回购时,历史记录看起来像A - > B - > C然后您做了一个更改,使提交历史记录看起来像:A - > B - > C-- > d。与此同时,如果有人推送到服务器,使用提交E,服务器上的历史记录将看起来像A - > B - > C - > D - > E

在这种情况下,你不会被允许推动。

你可以

  1. 从服务器拉出,然后尝试按

  2. 强制推送 - 不推荐,因为它会改变服务器提交历史记录。