【问题标题】:what determines default branch when cloning from git bare repository从 git 裸存储库克隆时确定默认分支的因素
【发布时间】:2014-11-12 21:26:00
【问题描述】:

我正在尝试使用 yum install 中的 git 1.8.3.1 从 git 裸仓库克隆时更改默认分支。我一直认为这样做的方法是更改​​远程 repo 的 HEAD 文件中的引用,并且几个 SO answers 似乎证实了这一点。

但是,我发现远程裸仓库中 HEAD 的值没有效果。即使我的远程仓库在 HEAD 中有这个值:

ref: refs/heads/secondbranch

我克隆时仍然默认为 firstbranch 分支!有什么想法吗?这些信息还可以存储在哪里?

【问题讨论】:

  • 服务器上的secondbranch 是否指向与firstbranch 相比不同 的提交?如果没有,我知道问题是什么......
  • secondbranch 指向同一个提交——请告诉问题是什么!
  • 爱德华·汤普森(Edward Thompson)击败了我(因为我整天都不在家:-))。请注意,您需要更新的客户端更新的服务器,否则您将获得“最佳猜测”方法。另请注意,您可以使用-b 参数覆盖默认结帐git clone

标签: git branch


【解决方案1】:

旧版本的 git 在获取和克隆时不会发送“默认分支”。相反,它们发送当前 HEAD 引用的对象 ID,以及其他引用的对象 ID。如果 HEAD 的对象 ID 与另一个引用的对象 ID 相同,它将设置 HEAD 指向该引用。 (如果没有匹配,你将处于分离的 HEAD 状态。)

但是,如果您有多个分支指向同一个提交,则消歧逻辑是模糊的。它会更喜欢一个名为 master 的分支,然后它会简单地选择它首先看到的那个。

别笑了,我是认真的。

此问题已在 Git 1.8.4.3 中修复。

【讨论】:

  • 怎么样...升级到 2.1.0 瞧,问题解决了。
  • v2.25.1 仍然遇到这个问题。为了清楚起见,我运行了这些命令:mkdir repo; cd repo; git init --bare; git symbolic-ref HEAD refs/heads/main; mkdir ../working; cd ../working; git clone ../repo; cd repo; cat .git/HEAD;,输出的最后一行是ref: refs/heads/master
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
  • 2017-11-19
  • 2017-08-26
  • 2018-03-07
  • 2017-03-30
  • 1970-01-01
  • 2013-11-25
相关资源
最近更新 更多