我想克隆一个分支,进行更改并推入同一个分支。
我这样做:
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"
我该怎么办?
答案 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>