今天我遇到了一个问题。我试图将分支推送到远程存储库,但它给出了一个错误。
经过一番搜索后,我在git irc频道上问过它,有人说推送的语法是
git push <remote> <localref>:<remoteref>
到目前为止,我只是使用git push工作正常。但在这种情况下,它失败了。
我试图将除master之外的一些分支推送到远程服务器,我收到以下错误:
error: src refspec xi-temp-dennis does not match any.
error: failed to push some refs to 'remote.server'
通过指定localref,它突然起作用。
我的问题是,为什么我这次需要指定localref?
答案 0 :(得分:4)
如果您只是简单地使用“git push remote”而没有指定任何引用,那么Git将推送所有“匹配分支”。 “匹配分支”是本地仓库中分支的名称与远程仓库中的分支相同的分支。远程仓库的分支将使用本地仓库中的匹配分支进行更新。
所以,如果你只有一个“master”分支,并且远程repo也有一个“master”分支,那么只需简单的“git push remote”就可以将本地master转移到远程master。
你已经创建了一个新的分支,“xi-temp-dennis”,它不能存在于远程仓库中。因此Git无法成功执行推送匹配分支的默认行为(因此“不匹配任何”错误)。
你需要告诉Git远程端的ref名称应该是什么,它会创建它:
git push remote xi-temp-dennis:foo
这将创建一个名为“foo”的远程分支,它将被更新。但是,它的名称与本地分支的名称不匹配,因此您始终需要键入相同的命令(使用xi-temp-dennis:foo)以推送更新。如果您希望能够只键入“git push remote”并使更新生效,那么您应该将远程分支命名为与本地远程分支相同:
git push remote xi-temp-dennis:xi-temp-dennis