【问题标题】:Error: src refspec does not match any错误:src refspec 不匹配任何
【发布时间】:2017-03-05 06:40:56
【问题描述】:

我和几个朋友在 GitLab 有一个项目,当然有 master 分支,还有一些其他的。当我克隆存储库时,我还使用命令git remote add upstream ... 创建了一个上游。

然后,我发布了git fetch upstream。其次是git checkout upstream/test1。现在,如果我输入git branch -a,我会得到这样的输出:

* (HEAD detached at upstream/test1)
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/upstream/test1
  remotes/upstream/master

这一切都很好,但后来我对我的upstream/test1 分支中的代码进行了一些更改,我想将它们推送到origin/test1 存储库,我收到标题上的错误消息。请注意,我按照以下步骤进行推送:

git add .
git commit -m "Sample message"
git push -u origin test1

如果我发出git show-ref,我会得到以下输出:

refs/heads/master
refs/remotes/origin/HEAD
refs/remotes/origin/master
refs/remotes/upstream/test1
refs/remotes/upstream/master

我检查了以下questions,但没有发现它有帮助。任何想法如何解决它?

【问题讨论】:

    标签: git github


    【解决方案1】:

    您似乎没有名为test1 的本地分支。您有一个名为 test1remote 分支与您的 upstream 远程关联。

    您不应该直接编辑upstream/test1 分支。事实上,尝试检查应该会产生警告:

    $ git checkout upstream/test1
    
    You are in 'detached HEAD' state. You can look around, make experimental
    changes and commit them, and you can discard any commits you make in this
    state without impacting any branches by performing another checkout.
    

    您应该首先检查一个跟踪远程分支的本地分支,它应该看起来像这样:

    $ git checkout test1
    Branch test1 set up to track remote branch test1 from upstream by rebasing.
    Switched to a new branch 'test1'
    

    完成此操作后,未修饰的git push 将推送到upstream 遥控器,而git push origin test1 将推送到您的origin 遥控器。在此处添加-u 标志将切换跟踪分支,以便您的分支将跟踪origin/test1 而不是跟踪origin/test1,以便将来的git pullgit push 操作将引用该远程分支(origin/test1 ) 默认情况下。

    【讨论】:

      【解决方案2】:

      以下将在本地和远程创建一个新分支。当我创建一个要使用的新分支时,我会遵循这一点。

      git 结帐大师

      git pull origin master

      git checkout -b 你的分支

      进行新的更改

      git push -u origin 你的分支

      【讨论】:

        【解决方案3】:

        在我的情况下,我在 master 分支中进行了更改,我试图将更改推送到开发分支,因此出现错误。 我所做的是-

        git checkout development
        

        进行更改然后运行

        git add .
        git commit -m "my changes"
        git push origin development
        

        【讨论】:

          【解决方案4】:

          对我来说,问题是我试图将我们设置的类型(功能 / 错误修复 / 等)推送到标志/文件夹内的分支名称,但由于我拥有我的方式,文件夹名称没有显示终端提示设置。我需要运行gpo feature/branch-name,只是心不在焉地运行gpo branch-name。 (gpo 是我为git push origin 设置的别名,顺便说一句)。

          以防万一这对任何人都有帮助。

          【讨论】:

            猜你喜欢
            • 2014-02-11
            • 2013-03-28
            • 2022-12-06
            • 2022-07-14
            • 2023-01-30
            • 2014-12-29
            • 2012-05-21
            • 2011-08-13
            相关资源
            最近更新 更多