2

我收到了一个可以处理的裸 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

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

有任何想法吗?

4

1 回答 1

2

当您的本地更改(提交历史)干扰服务器历史的历史时,它可能无法推送。例如,当您克隆存储库时,历史看起来像 A-->B-->C,然后您进行了更改,使提交历史看起来像:A-->B-->C-->D。同时,如果有人通过提交 E 推送到服务器,则服务器上的历史记录看起来像 A-->B-->C-->D-->E

在这种情况下,您将不被允许推送。

你可以

  1. 从服务器拉取然后尝试推送

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

于 2016-09-26T17:48:45.473 回答