我有一个裸库,用作我的项目的中央存储。所有开发人员都执行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文件。
如何正确地更改活动分支?
状态:
在repo .git目录下的Git签出
返回
fatal:此操作必须在工作树中运行
小贴士:
只需添加——work-tree参数
详细示例:
假设:
远程服务器上的裸git:
~ / bare_git_repository.git
分离工作树:
/var/www/myappremote
在本地服务器:
创建分支版本。1.7(我们的另一个分支)
Git分支版本。1.7
Git推送原始版本。1.7
在远程服务器上使用git裸回购:
$ CD ~/bare_git_repository.git
给我报应
主
version.1.7
如前所述,下面的命令
Git结帐版本。1.7
返回
fatal:此操作必须在工作树中运行
使用以下命令
Git——work-tree=/var/www/myappremote checkout version.1.7
成功地正确更改活动分支
给我报应
主
version.1.7
用下面的方法检查结果
2 / var / www / myappremote
希望对大家有所帮助
如何正确地更改活动分支?
状态:
在repo .git目录下的Git签出
返回
fatal:此操作必须在工作树中运行
小贴士:
只需添加——work-tree参数
详细示例:
假设:
远程服务器上的裸git:
~ / bare_git_repository.git
分离工作树:
/var/www/myappremote
在本地服务器:
创建分支版本。1.7(我们的另一个分支)
Git分支版本。1.7
Git推送原始版本。1.7
在远程服务器上使用git裸回购:
$ CD ~/bare_git_repository.git
给我报应
主
version.1.7
如前所述,下面的命令
Git结帐版本。1.7
返回
fatal:此操作必须在工作树中运行
使用以下命令
Git——work-tree=/var/www/myappremote checkout version.1.7
成功地正确更改活动分支
给我报应
主
version.1.7
用下面的方法检查结果
2 / var / www / myappremote
希望对大家有所帮助