Git推送不创建远程分支,而是将代码推送到主分支。

3
我遇到了一个问题,我想将本地分支推送到远程分支,以便我可以创建一个拉取请求并合并到主分支。我使用的命令是: git push origin branchname 但这似乎失败了,而是将其推送到主远程分支(这不太好)。如果我明确引用本地和远程分支(即:branchname:branchname),它就可以正常工作。看起来要么我的git配置有问题,要么我创建本地分支的方式有问题。
希望能得到帮助。

可能是重复的问题:将新的本地分支推送到远程Git仓库并跟踪它 - tanaydin
1
这个命令看起来很好。那么你是如何创建本地分支的呢? - arkascha
它认为它在追踪哪个分支?https://dev59.com/_XVC5IYBdhLWcg3w1Exq - James Bateson
3个回答

2

看起来您正在 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



我正在使用当前的Git版本中的--set-upstream - Pavel Šimerda
它对我一直都有效,而且当你没有设置上游时,Git本身也建议这样做。 - Pavel Šimerda

0

请尝试以下代码

 git push -u origin <branch_name>

如果您有权限将本地分支推送到远程仓库,那么它应该可以顺利进行。

如果你仔细读了问题,这正是他所做的(问题的第二行)。 - CodeWizard
他好像没有设置上游? - Mayur Nagekar

0

在将本地实例从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无关。


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