【问题标题】:Why does git push sometimes need a localref argument?为什么 git push 有时需要一个 localref 参数?
【发布时间】:2009-06-03 19:35:38
【问题描述】:

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

经过一番搜索,我在git irc频道上问过,有人说push的语法是

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?

【问题讨论】:

    标签: git git-push


    【解决方案1】:

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

    所以,如果你只有一个“master”分支,而远程仓库也有一个“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

    【讨论】:

    • 是的,我才意识到这一点。当我执行 git push remote xi-temp-dennis 时,它会在我的本地存储库中查找一个名为 xi-temp-dennis 的分支,而我认为它会指定远程存储库上的分支。
    • 请注意,通过使用git push -u &lt;remote&gt; &lt;branch&gt;,您还可以设置跟踪信息,以便下次使用git pull等命令。
    猜你喜欢
    • 2019-05-11
    • 2018-11-05
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 2019-03-11
    • 2011-07-07
    • 2017-05-07
    • 2013-10-22
    相关资源
    最近更新 更多