我试图将我的源代码部署到Github上。 然后,我首先将github源添加到远程源,如下所示:
$ git remote add origin git@github.com:user_name/foo_bar.git*
然后,我尝试运行“git push”命令将我的源代码上传到我的远程github帐户,如下所示。
$ git push
Enter passphrase for key '/c/Users/mylaptop/.ssh/id_rsa':
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'git@github.com:user_name/foo_bar.git'
正如我从railstutorial.org上了解到的,我知道如果我第一次使用“git push”,它将返回一个错误,期望我指定“origin master”参数。但是对于下一次和后来的时间,我只能启动“git push”,它会优雅地为我工作。这是什么原因?因为我认为默认情况下命令总是指分支'master'。
任何明确的解释都会非常感激。
答案 0 :(得分:5)
第一次执行git push
时,没有名为master on origin的远程分支。
分支存在后,您可以使用git push
,它将链接到远程分支,其名称与您当前所在分支的名称相同。
答案 1 :(得分:1)
Git存储库具有“跟踪”这一概念。因此,从git的角度来看,它可以知道主分支正在跟踪origin / master。如果它在你git push
时看到了这种关系,那就说“哦,他正在从主人那里推动,跟踪起源/主人。这一定是他们想去的地方。”
然而,在你第一次推送之前 - git不知道这种关系,这意味着你的命令(可能)含糊不清。您可以在Git Book's Chapter on Tracking。
中阅读有关此行为的官方文档注意:请参阅以下Jefromi的评论。他指出我的解释中的一些不准确之处可能很重要,具体取决于您的使用案例。
答案 2 :(得分:1)
git push origin
的默认行为是发送到origin
与origin
上的分支同名的所有本地分支。
如果在未指定git push
的情况下键入origin
,则会从您所在分支跟踪的远程分支推断出目标存储库的名称。因此,如果您在分支master
跟踪origin/master
,git push
与git push origin
类似。