这里的问题是,您创建了自己的名为heroku/master
的(本地)分支,同时还具有拼写为heroku/master
的远程跟踪名称1。
技术上,分支的完整名称是refs/heads/heroku/master
。 远程跟踪名称的完整名称是refs/remotes/heroku/master
。这些全名是不同的,因此可以将两者区分开。但这令人困惑,好像您参加的聚会中每个人都被称为布鲁斯:
解决此问题的方法很简单:为分支机构使用其他一些名称。例如,将heroku/master
分支重命名为h-master
:
git branch -m heroku/master h-master
现在您将master
和h-master
作为(本地)分支名称,并为一个远程跟踪名称保留heroku/master
。
1 Git称这些远程跟踪分支名称。它们是您的Git对其他Git上的分支名称的记忆。您的Git会记住另一个名为remote的Git。然后,您的Git将获取其分支名称(例如master
),并将其更改为在您自己的工作中使用。更改后的名称的前面贴有遥控器的名称,因此,如果您有一个名为fred
的遥控器,而另一个Git有一个名为wilma
的分支,则最终以fred/wilma
作为遥控器-跟踪名称。
最常用的远程名称是origin
,因此大多数人都会看到一个本地master
和一个远程跟踪名称origin/master
。一些Git工作流程要求使用第二个遥控器,通常命名为upstream
。 Heroku工作流程要求使用名为heroku
的遥控器,这就是为什么要使用名为heroku
的遥控器的原因。由于其他名为heroku
的Git有一个名为master
的分支,因此您的Git将创建heroku/master
作为heroku
的master
的远程跟踪名称。