在Git裸仓库中切换当前分支

48

我想从我正在使用的裸仓库中删除一个分支,但是这个任务遇到了一些困难,因为我无法在没有“工作树”的情况下切换到主仓库,而裸仓库没有工作树。

当我运行 git branch -d master 命令时,输出结果为:

error: Cannot delete the branch 'master' which you are currently on.

我尝试通过运行git checkout develop切换到另一个名为“develop”的分支,但输出是:

fatal: This operation must be run in a work tree

1
这看起来像是 https://dev59.com/NHA75IYBdhLWcg3wbofM 的重复,但正好符合我的用例,并且更易于阅读。因此我在这里点赞而不是标记,只需提供链接即可。 - David Schmitt
3
这个问题的回答是否解决了你的疑问?Git:在裸仓库中更改活动分支的正确方法? - MrTux
1个回答

72

不要使用git checkout,尝试使用这个:

git symbolic-ref HEAD refs/heads/develop

那么你应该可以删除主分支。


git clone --bare 不会创建 refs/heads/master。如果没有这样的 head,除了手动编辑 HEAD 之外,我该如何将 HEAD 的符号引用切换回 master - Dmitry Minkovsky
@dimadima 同样的方式。如果你查看 packed-refs,你应该会看到它包含了 refs/heads/master 的定义。 - cdhowie
请参考@VonC的答案,其中解释了symbolic-ref的正确用法。 - Ted

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接