我假设这个名字master
每个人都在 git 存储库中工作的“主”分支的名称分支只是一个约定。正确的?
那么我怎么知道 git 存储库中的“主”分支名称是什么,它已被覆盖以免使用该名称master
?
2 回答
假设您已经克隆了存储库并且远程的名称是origin
,那么您可以运行以下命令:
git symbolic-ref refs/remotes/origin/HEAD
这通常会打印refs/remotes/origin/master
,但如果项目选择someotherbranch
作为默认设置,它会显示refs/remotes/origin/someotherbranch
。
一些背景:在本地(非裸)存储库中,HEAD
指示当前签出的内容。在共享(裸)存储库中,没有工作目录,因此没有检出任何内容。因此,在裸存储库中,HEAD
用于指示存储库的默认分支(您在 时获得的分支git clone <url>
)。
当您克隆存储库时,远程存储库的HEAD
引用会复制到您的本地refs/remotes/origin/HEAD
引用,并且每当您执行操作时都会更新它git remote update
(尽管人们很少更改共享存储库中的默认分支)。这样可以很容易地查看远程存储库的默认分支的名称(通过运行上述symbolic-ref
命令)。
是的,master
只是一个约定。并非每个存储库都有一个名为master
. git 还允许您进行任意工作流程。不同的项目使用不同的分支策略。可能有类似“主分支”的东西,但有时根本不需要它。
您始终可以使用git branch -m
给提交一个新名称并git reset
给一个名称一个新提交。
大多数情况下,您可以使用分支的名称来了解它包含的内容。否则可以使用类似的东西gitk
来看看你的提交图。这可能会帮助您识别诸如“主分支”之类的东西。