我有一个裸库,用作我的项目的中央存储。所有开发人员都执行git clone <repo>来与它共享。当他们做克隆时,他们得到一个主分支的签出(除非他们做git clone -n),因为repo。git/HEAD包含ref: refs/heads/master,使其成为活动分支。
问题是,如何正确地更改活动分支?我可以简单地黑进回购系统。git/HEAD文件直接,但这似乎令人讨厌,嗯,hack。
我尝试在repo .git目录中执行git checkout <otherbranch>,但失败了,因为我不在工作树中。
我尝试了git update-ref HEAD refs/heads/otherbranch,但这只是更新了refs/heads/master,使其与refs/heads/otherbranch相同(好吧,我在一个虚拟库中做了那个,而不是我的生产库!)
我尝试了git update-ref——no-deref HEAD refs/heads/otherbranch,这几乎起作用了。它更新了HEAD文件,但它将其设置为refs/heads/otherbranch所指向的提交的SHA1。
我正在测试git版本1.7.0.2.msysgit.0。
我猜通过git push没有办法做到这一点,因为允许所有人改变你的默认分支似乎有点不安全(!),但可以肯定的是,在repo .git目录中有更好的方法来做到这一点,而不是直接破解HEAD文件。