我的 git 中有两个分支.一个是绿色的(主),另一个(个人网站/主)是红色的



为什么第二个分支显示为红色。而且当我进入git branch时,只有一个分支:主人。当我尝试删除第二个分支(个人网站/主)时,它显示错误(找不到分支"个人网站/主")。可能是什么问题。如何删除它?[下图]

吉特终端

personal-website/master是一个远程分支,它向本地分支master提供上游。要删除远程分支,您需要执行删除推送,如下所示:

git push personal-website master --delete

这里的红色并不表示任何类型的错误。 相反,它将远程跟踪名称与分支名称区分开来。 默认情况下,当 Git 将颜色应用于分支名称时,它会将本地分支名称显示为绿色,将远程跟踪名称设置为红色。

远程跟踪名称是 Git 软件根据 Git 软件在其他某个 Git 存储库中观察到的分支名称在Git 存储库中维护的名称。 Git 是一个分布式版本控制系统——一个"DVCS",D 代表分布式——在这种情况下,这意味着存储库被复制。 副本可以是精确重复项,也可以是近似重复项。 当您向存储库添加新提交时,其存储库的副本变得不那么精确,因为此时您添加到存储库的新提交仅在存储库中。

仓库中的分支名称是为了帮助您跟踪提交。 Git 本身实际上不需要任何分支名称:Git 通过它们的哈希 ID 查找提交,哈希 ID 是非常大的数字,以十六进制表示。

每个提交都会获得一个唯一的哈希 ID,并且当且仅当两个单独的存储库具有具有相同哈希 ID的提交时,它们才具有相同的提交。 因此,两个存储库与git pushgit fetch相遇,只需比较哈希 ID,就可以知道它们共享哪些提交,以及一个存储库缺少哪些提交而另一个存储库缺少哪些提交。1提交及其数量对 Git 来说实际上很重要。 但是这些数字看起来是随机的,不能被普通人使用,所以我们使用名称:特别是分支名称。

但是您的分支名称在您的存储库中就是您的名称。 你可以对他们做任何你想做的事情。 它们不是其他人的分支名称。 您让仓库调用并向其提交或从中获取提交或两者的其他仓库都有自己的分支名称,这些名称会记住它们的提交哈希ID。

当你的 Git 软件调用他们的 Git 软件时,你的 Git 代码可以看到它们的名字是什么以及存储在其中的哈希 ID 是什么。 您的 Git 会采用这些名称并将它们更改为远程跟踪名称,并将这些远程跟踪名称填充到您的存储库中。 通过更改名称,您的 Git 可确保分支名称不会与您的分支名称冲突。 但是现在,能够一目了然地看到哪些名字是谁,对您来说可能很重要。 颜色区别可以帮助解决这个问题。

只要您打算再次连接到他们的存储库,您就不必担心您自己的 Git 随身携带他们的分支名称(翻译成您的远程跟踪名称)。 如果红色困扰您,您可以指示您的 Git 软件使用其他颜色,您可以配置一些设置:

  • color.branch.remote控制git branch -rgit branch -a中的远程跟踪名称颜色。
  • color.decorate.remoteBranch控制git log中的远程跟踪名称颜色。

(为什么一个是remote,一个是remoteBranch,这是一个谜,也是一个历史怪事。 但是,Git 文档通常使用短语远程跟踪分支名称,而不是更简单的远程跟踪名称

完全删除遥控器,如William Pursell的评论,也将删除远程跟踪名称。 但是,这意味着您无法再运行git fetch personal-websitegit push personal-website来方便地从其他 Git 存储库获取新提交,或将您的提交发送到远程存储库。(您仍然可以获取和发送提交,只是无法使用短词personal-website方便地做到这一点。 这个简短的单词personal-website就是 Git 所说的远程


1这种独特的哈希 ID 技巧是 Git 的真正魔力:它如何设法确保没有两个存储库意外地将相同的数字用于不同的提交,但始终使用相同的数字进行相同的提交,这是一个数学奇迹。 它也有根本性的缺陷:总有一天,Git 会失败。 数字空间的庞大规模使这一天推迟了很长时间:我们希望数十亿或数万亿年,这样我们都会死很久,不会在乎。