Git主分支没有上游分支。

47

我试图将我的一个项目推送到Github,但是一直出现以下错误:

fatal: The current branch master has no upstream branch.

我以前从来没有见过这个。我重新初始化了我的git,重新添加了我的origin,删除并重新创建了repo,重建了我的SSH密钥。

11个回答

92

不需要在 Github 上创建一个新的仓库,也不需要克隆它或重新初始化本地仓库,下面的命令就足够了:

git push -u origin master

origin 代表远程名称(默认为 origin),
master 是你要推送的分支,在你的情况下是 master,否则你需要在命令中更改。
-u 表示你的本地分支将被设置为跟踪远程仓库上新创建的 master 分支(origin 上的 master 将是你的本地分支的上游分支)。如果远程仓库上不存在 master 分支,则会创建它,否则将更新它(无论它是否存在,-u 都可以使用)。


1
谢谢!我不知道-u的存在。 - Matt Dotson
如果这个方法不起作用,你是否有一个以大写字母开头的分支?Github似乎使用小写字母作为分支名称的开头。 - Jason Harrison
2
完美地运作了。在Tortoise Git中,选择Push,然后勾选Set upstream/track remote branch。 - Jeff Dunlop
1
这是我第五次来这里处理这行代码。当你从本地分支而不是远程分支创建分支时,需要在VS中使用它。在VS的团队资源管理器中似乎没有将本地分支推送到上游(remote)的功能。 - Philip Rego

32

以下命令对我起作用:

git branch --set-upstream-to=origin/master master

这里需要等号。 - Tim
2
更近期的 Git 版本应该是 git branch --set-upstream origin master - Zombies

7
我遇到了同样的问题,只需告诉 GitHub 使用您本地存储库的当前主分支:
git push --set-upstream origin master

希望它能帮助你和其他人。

4
尝试这个命令:git push --set-upstream origin master,它可以将你的本地代码推送到远程仓库并与主分支进行关联。 - Sachin Singh

3
一些人来到这个页面可能只是因为他们执行了git push origin的命令,但并没有意识到需要同时指定远程分支名称,例如git push origin master
如果你执行了git branch --set-upstream-to=origin/master master命令,则会在.git\config文件中添加一个引用,将本地分支和远程分支链接起来。我认为当你推送到远程时,你不再需要指定分支名称。

3

今天我在自己的远程仓库,而非Github上遇到了这个问题,并意识到在尝试推送到远程仓库之前我没有向本地仓库做任何提交。

git add -A
git commit
git push origin master

2
如果有人仍然遇到这个问题,这个命令对我有用。
git push --set-upstream origin master

1
在Github上创建仓库;在Github上添加README文件,然后克隆Github仓库。创建README文件(或实际上的任何文件)是为了获取主分支。
请注意,在创建存储库时,Github提示创建README:

被踩了。这个答案假定存储库尚不存在。根据JShoe接受了这个答案,这似乎正是他们的情况。 如果不明显:如果您已经设置了一个,请不要这样做,而是查看其他流行答案,所有这些答案都会给出一些变化 git push --set-upstream origin master - Leif Willerts

1

Cool Blue的答案对我几乎起作用了。

首先我执行了: "git branch --set-upstream-to=origin/master master",如Cool Blue所推荐。

但仍然收到错误消息:
"failed to push some refs to '' hint: Updates were rejected because the tip of your current branch is behind its remote counterpart. Integrate the remote changes (e.g. 'git pull ...') before pushing again."

所以我... 在git branch之后执行了"git push -f"命令,这最终对我起了作用。

强制推送后,随后的“git push”命令就可以正常工作了。


0

尝试使用HTTP和SSH URL?当我使用SSH URL时遇到了问题,但是当我切换到HTTP URL时,它就像魔法般地工作了。

这是我所做的更改:

首先,查看远程URL。

git remote -v 

然后你会得到返回的目的地。

git remote rm destination 

如果您需要帮助,请点击以下链接: https://help.github.com/articles/removing-a-remote/

然后,

git remote add origin url 
git push -u origin master

0

git push -u origin master已被弃用。

请使用git config --global push.default current代替。


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