3

我今天遇到了 git push 的问题。我试图将一个分支推送到远程存储库,但它给出了一个错误。

经过一番搜索,我在 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?

4

1 回答 1

4

如果您只是简单地执行“git push remote”而不指定要推送的任何引用,那么 Git 将推送所有“匹配的分支”。“匹配分支”是本地仓库中的分支名称与远程仓库中的分支相同的分支。远程仓库的分支将使用本地仓库中的匹配分支进行更新。

所以,如果你只有一个“master”分支,而远程 repo 也有一个“master”分支,那么只需简单的“git push remote”就会将本地 master 推送到远程 master。

您已经创建了一个新分支“xi-temp-dennis”,它不能存在于远程仓库中。因此 Git 无法成功执行推送匹配分支的默认行为(因此出现“不匹配任何”错误)。

您需要告诉 Git 远程端的 ref 名称应该是什么,它会创建它:

git push 远程 xi-temp-dennis:foo

这将创建一个名为“foo”的远程分支,该分支将被更新。但是,它的名称与您本地分支的名称不匹配,因此您总是需要键入相同的命令(使用 xi-temp-dennis:foo)才能推送更新。如果您希望能够只键入“git push remote”并进行更新,那么您应该将远程分支命名为与本地分支相同:

git push 远程 xi-temp-dennis:xi-temp-dennis
于 2009-06-03T20:05:01.863 回答