为什么 git branch -r 显示同一分支的两个名称:origin/master 和 [repo 名称]/master?
Why git branch -r shows two names for same branch: origin/master AND [repo name]/master?
注意到我已经执行了:
git fetch
和
git fetch --prune
同样的结果。
我的 git branch -r
输出:
一开始我很困惑,以为我创建了重复的分支,但在 repo 页面中,只有一个 master。 (连'dev-daal'都删了)
编辑 1:
我试过
git fetch --all
现在我所有的东西都有两个版本:
您有两个遥控器。说 git remote -v
查看列表。如果它们是同一个 URL 的两个名称,您可以删除一个。
git remote rm Daal-Backend
git branch -r
命令列出了您的 remote-tracking 姓名。 Git 在其一些文档中称它们为“remote-tracking 分支名称”,但尽管 Git 过度使用“分支”一词,remote-tracking 名称并不是 branch 名字在一个非常重要的意义上。这就是为什么我喜欢省去误导性的词,只称它们为“remote-tracking 名字”。
无论如何,关于 remote-tracking 名称,有几件事需要了解:
它们在您的 存储库中。它们不一定对任何其他存储库有任何意义,除了下一点。
您的 Git 软件 创建或更新 它们,在您的存储库中,当您的 Git 软件连接到其他 Git 软件与其他 Git 存储库一起工作,并且其他 Git 软件告诉您的 Git 软件 other 存储库当前有一些分支名称。由于分支名称是临时的且无意义的,但对于定位 commits(它们是永久的且有意义的)很有用,您的 Git 软件 copies 那些名称到您的存储库,以便您可以使用他们的名称。但由于这些是 他们的 分支名称,而不是你的,所以你的 Git 重命名 他们的分支名称。
你得到的名字——remote-tracking名字——是用你用来与他们的Git交谈的名字制成的软件,例如 origin
或 Daal-Backend
,添加一个斜杠 /
,然后使用它们的 分支 名称。因此,如果您的 Git 软件正在使用名称 Daal-Backend
与其他 Git 软件通信,而其他 Git 软件告诉您,就在这一刻,他们 有一个名为 master
的分支,你的 Git 将在 [=49] 中创建或更新名称 Daal-Backend/master
=]您的 存储库,以便您可以轻松检索 他们 当前正在调用 master
.
的提交的哈希 ID
如果他们——无论他们是谁——重命名他们的 master
,你的 Git 将在下次你的 Git 呼叫他们的 Git 时使用新名称,并且与他们谈论他们的分支名称。届时,您的 Git 软件将根据他们的新名称创建一个新名称,例如 Daal-Backend/main
。你的Git不会删除你的旧名字,除非你告诉它。
同样,如果他们 完全删除 他们的 master
(如果他们愿意,他们可以这样做:名字 master
没有什么特别的)和你的Git 呼叫他们的 Git,你的 Git 不会做任何事情,因为你的 Git 不再看到他们的 master
。你必须告诉你的 Git 如果你和他们交谈而他们根本没有那个分支名称,请删除我的副本 。您可以使用 git fetch --prune Daal-Backend
执行此操作。这让你的 Git 询问他们的 Git 关于他们所有的分支名称,根据需要创建或更新你的 remote-tracking 名称,并且 删除 任何 陈旧,left-over 个名字。
请注意,这一切都假设您让 Git 软件使用名称 Daal-Backend
来调用他们的 Git 软件。您现在是否应该使用名称 origin
(如 git fetch origin
)调用任何其他 Git 软件,无论是否属于他们,并获取有关 another[= 的信息80=] 存储库,这次您的 Git 软件将创建 and/or 更新您的 origin/*
名称。
因此,这完全取决于您用来联系 Git 所谓的 远程 的名称。 远程 只是其他一些Git 存储库的简称:远程挂在URL 上。您将使用 git remote add
来 添加 一个遥控器,或者 git remote remove
来 删除 一个遥控器。那个遥控器的存在,加上你 运行 git fetch
,加上那个遥控器 上 上的分支名称的存在,是导致你拥有 remote-tracking 名字。
注意到我已经执行了:
git fetch
和
git fetch --prune
同样的结果。
我的 git branch -r
输出:
一开始我很困惑,以为我创建了重复的分支,但在 repo 页面中,只有一个 master。 (连'dev-daal'都删了)
编辑 1:
我试过
git fetch --all
现在我所有的东西都有两个版本:
您有两个遥控器。说 git remote -v
查看列表。如果它们是同一个 URL 的两个名称,您可以删除一个。
git remote rm Daal-Backend
git branch -r
命令列出了您的 remote-tracking 姓名。 Git 在其一些文档中称它们为“remote-tracking 分支名称”,但尽管 Git 过度使用“分支”一词,remote-tracking 名称并不是 branch 名字在一个非常重要的意义上。这就是为什么我喜欢省去误导性的词,只称它们为“remote-tracking 名字”。
无论如何,关于 remote-tracking 名称,有几件事需要了解:
它们在您的 存储库中。它们不一定对任何其他存储库有任何意义,除了下一点。
您的 Git 软件 创建或更新 它们,在您的存储库中,当您的 Git 软件连接到其他 Git 软件与其他 Git 存储库一起工作,并且其他 Git 软件告诉您的 Git 软件 other 存储库当前有一些分支名称。由于分支名称是临时的且无意义的,但对于定位 commits(它们是永久的且有意义的)很有用,您的 Git 软件 copies 那些名称到您的存储库,以便您可以使用他们的名称。但由于这些是 他们的 分支名称,而不是你的,所以你的 Git 重命名 他们的分支名称。
你得到的名字——remote-tracking名字——是用你用来与他们的Git交谈的名字制成的软件,例如
的提交的哈希 IDorigin
或Daal-Backend
,添加一个斜杠/
,然后使用它们的 分支 名称。因此,如果您的 Git 软件正在使用名称Daal-Backend
与其他 Git 软件通信,而其他 Git 软件告诉您,就在这一刻,他们 有一个名为master
的分支,你的 Git 将在 [=49] 中创建或更新名称Daal-Backend/master
=]您的 存储库,以便您可以轻松检索 他们 当前正在调用master
.
如果他们——无论他们是谁——重命名他们的 master
,你的 Git 将在下次你的 Git 呼叫他们的 Git 时使用新名称,并且与他们谈论他们的分支名称。届时,您的 Git 软件将根据他们的新名称创建一个新名称,例如 Daal-Backend/main
。你的Git不会删除你的旧名字,除非你告诉它。
同样,如果他们 完全删除 他们的 master
(如果他们愿意,他们可以这样做:名字 master
没有什么特别的)和你的Git 呼叫他们的 Git,你的 Git 不会做任何事情,因为你的 Git 不再看到他们的 master
。你必须告诉你的 Git 如果你和他们交谈而他们根本没有那个分支名称,请删除我的副本 。您可以使用 git fetch --prune Daal-Backend
执行此操作。这让你的 Git 询问他们的 Git 关于他们所有的分支名称,根据需要创建或更新你的 remote-tracking 名称,并且 删除 任何 陈旧,left-over 个名字。
请注意,这一切都假设您让 Git 软件使用名称 Daal-Backend
来调用他们的 Git 软件。您现在是否应该使用名称 origin
(如 git fetch origin
)调用任何其他 Git 软件,无论是否属于他们,并获取有关 another[= 的信息80=] 存储库,这次您的 Git 软件将创建 and/or 更新您的 origin/*
名称。
因此,这完全取决于您用来联系 Git 所谓的 远程 的名称。 远程 只是其他一些Git 存储库的简称:远程挂在URL 上。您将使用 git remote add
来 添加 一个遥控器,或者 git remote remove
来 删除 一个遥控器。那个遥控器的存在,加上你 运行 git fetch
,加上那个遥控器 上 上的分支名称的存在,是导致你拥有 remote-tracking 名字。