git push origin branchname
但这似乎失败了,而是将其推送到主远程分支(这不太好)。如果我明确引用本地和远程分支(即:branchname:branchname),它就可以正常工作。看起来要么我的git配置有问题,要么我创建本地分支的方式有问题。希望能得到帮助。
git push origin branchname
但这似乎失败了,而是将其推送到主远程分支(这不太好)。如果我明确引用本地和远程分支(即:branchname:branchname),它就可以正常工作。看起来要么我的git配置有问题,要么我创建本地分支的方式有问题。看起来您正在 master
分支上,并试图将其推送到另一个分支。
设置/更新跟踪分支
git < 1.8:
git branch --set-upstream branch_name remote/branch_name
git > 1.8:
git branch branch_name --set-upstream-to remote/branch_name
您当前的跟踪信息在您的 .git/config
文件中。
git checkout -b <new_branch>
git push origin <new_branch>
假设您没有更改跟踪分支,git将推送到远程分支您当前的分支名称。
重命名分支(以便跟踪分支也会更新)
或者您可以使用 -u 开关:
git branch branch_name -u remote/branch_name
--set-upstream
。 - Pavel Šimerda请尝试以下代码
git push -u origin <branch_name>
在将本地实例从develop
重命名为origin-develop
后,我遇到了类似的问题。该分支是从远程仓库origin
拉取的。
重命名后,我给出的通用推送命令总是尝试推送到origin/master
。即,
$ git push
To github.com:<USER>/<REPO>.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'github.com:<USER>/<REPO>.git'
我尝试使用git branch origin develop
,但那并没有解决问题。相反,我得到了错误信息。
$ git push origin develop
error: src refspec develop does not match any
error: failed to push some refs to 'github.com:<USER>/<REPO>.git'
git remote show origin
使我能够看到,虽然本地分支origin-develop
已经正确设置了拉取(可能是因为我使用了pull命令创建本地分支),但是推送设置却丢失了。Local branches configured for 'git pull':
<snip>
origin-develop merges with remote develop
<snip>
Local refs configured for 'git push':
<snip>
我通过使用该命令成功解决了我的问题
git push origin origin-develop:develop
这个方法可以解决问题,但我并不认为它是“解决”了,因为每次我想要将这个分支推送到远程时都需要使用这个命令。如果我只使用git push
,我会得到![rejected] master -> master (non-fast-forward)
错误。
我的理解是,我的pull
命令设置了用于拉取的远程,但没有设置用于推送的远程。因为没有定义远程推送,所以默认推送到master
。
我不明白的是如何永久更改我的配置,使得git push
按预期工作。我尝试使用git branch -u
,但得到相同的行为(即无法推送)。我想知道是否某种方式使得推送-all
选项现在成为默认选项,并且错误消息与分支origin-develop
无关。