错误:源引用规范与任何内容都不匹配

14

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

接着,我用git fetch upstream命令,然后用git checkout upstream/test1切换到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

我查看了以下问题,但没有发现有用的信息。有任何解决方法吗?

5个回答

15

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

你不应该直接编辑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)。


5
以下将同时在本地和远程创建一个新的分支,我在创建新分支时会按照以下步骤进行操作。
``` git checkout master git pull origin master git checkout -b <你的分支名> ```
进行新的更改
``` git push -u origin <你的分支名> ```

0

对我来说,问题在于我试图将代码推送到我们设置的类型文件夹(feature / bugfix /等)中的分支名称,但由于终端提示符的设置方式,文件夹名称没有显示出来。我需要运行gpo feature/branch-name,而我只是不经意地运行了gpo branch-name。(顺便说一下,gpo是我为git push origin设置的别名)。

以防这能帮到任何人。


0
在我的情况下,我已经在主分支上进行了更改,然后尝试将更改推送到开发分支,因此出现了错误。我的做法是 -
git checkout development

我进行了修改,然后运行了程序

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

-1

我也遇到了同样的问题,但后来我成功解决了。 $ git push –set-upstream origin master 错误:src refspec origin does not match any 错误:failed to push some refs to '–set-upstream' 解决方案 $ git remote add origin url $ git push -u --set-upstream origin master


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接