错误:src refspec与任何

时间:2016-10-23 11:15:54

标签: git github

我在GitLab有几个朋友的项目,当然还有主分支,还有其他一些。当我克隆存储库时,我使用命令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,但没有发现它有用。任何想法如何解决?

4 个答案:

答案 0 :(得分:3)

您似乎没有名为test1的本地分支。您有一个名为test1远程分支与您的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标记会切换跟踪分支,以便您的分支跟踪upstream/test1,而不是跟踪origin/test1,以便将来git pullgit push操作默认情况下会引用该远程分支(origin/test1)。

答案 1 :(得分:1)

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

  

git checkout master

     

git pull origin master

     

git checkout -b 你的分支

进行新的更改

  

git push -u origin your-branch

答案 2 :(得分:0)

在我的情况下,我在master分支中进行了更改,并且试图将更改推送到development分支,因此得到了错误。 我所做的是-

git checkout development

进行我的更改,然后运行

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

答案 3 :(得分:0)

对我来说,问题是我试图将标记/文件夹中的分支名称推入我们已设置的类型(功能/错误修复/等),并且由于我的处理方式而未显示文件夹名称终端提示设置。我需要运行gpo feature/branch-name,但心不在running地运行gpo branch-name。 ({gpo是我为git push origin设置的别名,顺便说一句。)

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