为了账号安全,请及时绑定邮箱和手机立即绑定

将Git远程HEAD更改为指向除master之外的其他东西

将Git远程HEAD更改为指向除master之外的其他东西

Git
BIG阳 2019-07-23 19:24:17
将Git远程HEAD更改为指向除master之外的其他东西如何将Git遥控器的HEAD引用设置为指向除“master”之外的其他内容?我的项目有一个不使用“主”分支的策略(所有分支都有有意义的名称)。此外,规范主存储库只能通过ssh://访问,没有shell访问权限(如GitHub或Unfuddle)。我的问题是远程存储库仍然有一个HEAD引用refs / heads / master,但我需要它指向一个不同的分支。这导致两个问题:克隆回购时,有这个,警告:远程HEAD是指不存在的ref,无法结帐。这令人困惑和不方便。基于Web的代码浏览器依赖于HEAD作为浏览树的基础。我需要HEAD指向一个有效的分支,然后。
查看完整描述

3 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

一年前GitHub上几乎有同样的问题

我的想法是重命名主分支:

git branch -m master developmentgit branch -m published mastergit push -f origin master

让主人拥有你想让人们使用的东西,并在分支机构中完成所有其他工作。

(a“ git-symbolic-ref HEAD refs/head/published”不会传播到远程仓库)

这类似于“ 如何在Git中删除origin / master ”。


正如在这篇帖子中所说:(强调我的)

“ git clone”只创建一个本地分支。
为此,它查看HEAD ref远程仓库的内容,并创建一个与其引用的远程分支同名的本地分支。

所以要包装它,你有repo A并克隆它:

  • HEAD引用refs/heads/master和存在
    - >从origin / master开始,您将获得一个名为master的本地分支

  • HEAD引用refs/heads/anotherBranch和存在
    - >从一anotherBranch开始就调用一个本地分支origin/anotherBranch

  • HEAD引用refs/heads/master并且不存在
    - >“git clone”抱怨

不确定是否有任何方法可以直接修改HEAD回购中的ref

(这是你问题的全部要点,我知道;))


也许唯一的方法就是“为穷人出版”,你可以:

 $ git-symbolic-ref HEAD refs/head/published
 $ git-update-server-info
 $ rsync -az .git/* server:/local_path_to/git/myRepo.git/

但这将涉及对服务器的写访问,这并不总是可行的。


正如我在“ Git:在一个裸存储库中更改Active Branch的正确方法? ”中解释的那样,git remote set-head不会改变远程仓库上的任何内容。

它只会更改本地仓库中本地存储的远程跟踪分支remotes/<name>/HEAD



查看完整回答
反对 回复 2019-07-23
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

这仅适用于存储库的本地副本(“客户端”)。请在下面查看其他人的评论。

使用最新版本的git(2014年2月),正确的程序将是:

git remote set-head $REMOTE_NAME $BRANCH

因此,例如,将远程头部切换origin到分支develop将是:

git remote set-head origin develop


查看完整回答
反对 回复 2019-07-23
?
守着一只汪

TA贡献1872条经验 获得超3个赞

既然你提到GitHub,要在他们的网站上进行,只需进入你的项目,然后......

admin > Default Branch > (choose something)

完成。


查看完整回答
反对 回复 2019-07-23
  • 3 回答
  • 0 关注
  • 6083 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信