Git 当引用指针指向两个不同的提交时,这意味着什么?

Git 当引用指针指向两个不同的提交时,这意味着什么?,git,heroku,atlassian-sourcetree,Git,Heroku,Atlassian Sourcetree,我看到下图中的heroku/master指向两个不同的提交,我不知道这是为什么! 这是在我运行命令git branch-f heroku/master 67520d9f之后发生的。有人能解释一下吗?这里的问题是,您创建了自己的(本地)分支,名为heroku/master,同时还有一个远程跟踪名称1,拼写为heroku/master 从技术上讲,分支机构的全名是refs/heads/heroku/master。远程跟踪名称的全称为refs/remotes/heroku/master。这些全名是不

我看到下图中的heroku/master指向两个不同的提交,我不知道这是为什么!


这是在我运行命令git branch-f heroku/master 67520d9f之后发生的。有人能解释一下吗?

这里的问题是,您创建了自己的(本地)分支,名为
heroku/master
,同时还有一个远程跟踪名称1,拼写为
heroku/master

从技术上讲,分支机构的全名是
refs/heads/heroku/master
。远程跟踪名称的全称为
refs/remotes/heroku/master
。这些全名是不同的,因此有可能区分两者。但这令人困惑,就好像你在一个聚会上,每个人都叫布鲁斯:

  • 布鲁斯:布鲁斯!你好吗?你见过布鲁斯吗
  • 布鲁斯:不,嗨,布鲁斯!你怎么认识布鲁斯的
  • 布鲁斯:我们都为布鲁斯工作过一段时间
这个问题的解决方法很简单:为分支使用其他名称。将您的
heroku/master
分支重命名为
h-master
,例如:

git branch -m heroku/master h-master
现在您将有
master
h-master
作为(本地)分支名称,并为一个远程跟踪名称保留
heroku/master


1Git调用这些远程跟踪分支名称。它们是Git在其他Git上找到的分支名称的内存。您的Git会记住另一个名为remote的Git。然后,您的Git采用它们的分支名称,如
master
——并将它们更改为在您自己的工作中使用。更改后的名称的前面粘贴了遥控器的名称,因此,如果您有一个名为
fred
的遥控器,而另一个Git有一个名为
wilma
的分支,那么您最终将以
fred/wilma
作为远程跟踪名称


最常见的远程名称是
origin
,因此大多数人都会使用本地
master
和远程跟踪名称
origin/master
。一些Git工作流需要第二个远程服务器,通常称为
上游
。Heroku工作流需要一个名为
Heroku
的远程服务器,这就是为什么您有一个名为
Heroku
的远程服务器。由于您的另一个名为
heroku
的Git有一个名为
master
的分支,您的Git将创建
heroku/master
作为
heroku
master

的远程跟踪名称,我想您是通过另一种方式得到的。您有一个修订版,它由两个不同的指针(一个本地分支和一个远程分支)指向。因此,蓝色的一个是本地的,红色的一个是远程的?哦。。。。现在我明白你在说什么了。是否可以使用终端进行检查?运行
git branch-a
查看列出的内容。我得到了这个
(头部在67520d9f处分离)heroku/master remotes/heroku/master
在这里你可以看到我得到的屏幕截图: