git push on branch src refspec与any不匹配

时间:2014-02-08 09:18:11

标签: git branch push

我想克隆一个分支,进行更改并推入同一个分支。

我这样做:

mkdir myfolder
cd myfolder
git init
git clone "myurl" -b "mybranch"
git remote add origin "myurl"
edit "myfile.txt"
git add "myfile.txt"
git commit -m "my comment"
git push origin "mybranch"

但是我收到了这个错误:

error: src refspec "mybranch" does not match any 
error: failed to push some refs to "myurl"

我该怎么办?

3 个答案:

答案 0 :(得分:7)

您可以明确指定要推送的远程分支:

git push origin myBranch:existing_remote_branch

实际上,您似乎执行了许多过多的步骤,通常工作流程更简单。另外值得检查Configure a local branch for push to specific branch

更新

假设git相对现代,我会按如下方式进行:

git clone "$myurl" "$myfolder"
cd "$myfolder"
git checkout "$mybranch"
git remote set-head origin "$mybranch"
... add and commit your changes here ...
git push origin "$mybranch"

我想问一下为什么你创建了两个不同的git存储库,一个在“$ myfolder”中,另一个在“$ myfolder /< project_name>”中?这是预期的行为吗? (我可以想象它可能有用的情况,但它们是“角落情况”,充其量)

答案 1 :(得分:0)

如果要使用与本地分支不同的名称推送到远程分支,请使用冒号分隔本地名称和远程名称:

git push origin local-name:remote-name

答案 2 :(得分:-1)

我在 GitLab 中创建了一个新的存储库,并得到了相同的错误: 分支 src refspec 上的 git push 不匹配任何

对我来说,我通过运行解决了

  - lineinfile:
      line: "{{ item.stdout }}"
      path: /tmp/list.log
      create: yes
    when:
      - item.changed is defined
      - item.changed
    loop: "{{ files.results }}" 
  - lineinfile:
      line: "{{ item.stdout }}"
      path: /tmp/list.log
      create: yes
    when:
      - item.changed is defined
      - item.changed
    loop: "{{ files2.results | default([]) }}"

然后

git checkout -b main 

这是因为在默认情况下创建新存储库时您站在 MASTER 分支上,并且所有指令都要求在分支 MAIN 上执行所有操作,因此通过切换到在分支 MAIN 上运行所有操作,我解决了我的问题< /p>