我有一个裸仓库,用作我的项目的中央存储。所有开发人员都git clone <repo>愿意与它分享。当他们进行克隆时,他们会git clone -n因为repo.git/HEAD包含而将master分支检出(除非这样做)ref: refs/heads/master,从而使之成为Active Branch。问题是,如何正确更改活动分支?我可以repo.git/HEAD直接直接破解文件,但这看起来很讨厌,而且很hacky。我尝试git checkout <otherbranch>在repo .git目录中执行此操作,但是失败了,因为我不在工作树中。我尝试过,git update-ref HEAD refs/heads/otherbranch但是只是将refs / heads / master更新为与refs / heads / otherbranch相同(好吧,我在虚拟存储库中做了一个,而不是我的生产仓库!)我尝试了git update-ref --no-deref HEAD refs/heads/otherbranch,几乎成功了。它更新了HEAD文件,但将其设置为指向的提交的SHA1 refs/heads/otherbranch。我正在使用git version进行测试1.7.0.2.msysgit.0。我猜测没有办法做到这一点git push,因为允许所有人和其他人更改您的默认分支似乎有些不安全(!),但是肯定有.git比直接修改HEAD文件更好的方法在repo 目录中。
3 回答
米脂
TA贡献1836条经验 获得超3个赞
如果您有权访问远程裸仓库,则本文建议您:
git symbolic-ref HEAD refs/heads/mybranch
它将更新存储库中的HEAD文件,使其包含:
ref: refs/heads/mybranch
如在 git-symbolic-ref
如果您无权访问远程仓库,请参阅我以前的回答。
记住这样的命令git remote set-head:
不会更改远程仓库的默认分支。
它仅将存储在本地存储库中的远程跟踪分支更改为refs/remotes/<name>/HEAD
不会自行更改HEAD(再次refs/remotes/<name>/HEAD),因此需要 git symbolic-ref。
所以这里git remote set-head 不是答案。
git symbolic-ref HEAD是,如果您可以直接访问远程仓库。
- 3 回答
- 0 关注
- 1195 浏览
添加回答
举报
0/150
提交
取消