Cra*_*lus 2 git version-control
我认为名称master分支是每个人都在 git 存储库中工作的“主”分支,这只是一个约定。正确的?
那么我如何知道 git 存储库中已覆盖的“主”分支名称是什么,以便不使用该名称master?
假设您已经克隆了存储库并且远程名称为origin,那么您可以运行以下命令:
git symbolic-ref refs/remotes/origin/HEAD
Run Code Online (Sandbox Code Playgroud)
这通常会打印refs/remotes/origin/main或refs/remotes/origin/master,但如果项目选择someotherbranch作为默认值,它将显示refs/remotes/origin/someotherbranch。
一些背景:在本地(非裸)存储库中,HEAD指示当前签出的内容。在共享(裸)存储库中,没有工作目录,因此没有检出任何内容。因此,在裸存储库中,HEAD用于指示存储库的默认分支(运行时获得的分支git clone <url>)。当您克隆存储库时,远程存储库的HEAD引用将复制到本地refs/remotes/origin/HEAD引用。
HEAD引用没有指向有效的提交(例如,您正在克隆新创建的空存储库),git clone则不会创建origin/HEAD.git remote update并且git fetch不更新origin/HEAD以匹配远程引用的当前值HEAD。(假设远程存储库指向有效提交,您可以运行git remote set-head origin -aupdate 或 create 。)origin/HEADHEAD我认为这两种行为都是错误。然而,我相信旧版本的 Git(大约 2013 年)已更新origin/HEAD以匹配远程,这意味着 Git 开发人员故意改变了行为。如果这是正确的,那么这一改变可能是有充分理由的。
| 归档时间: |
|
| 查看次数: |
4085 次 |
| 最近记录: |