我有一个项目托管在我自己的个人 git 服务器上(它不在 GitHub 上)。 master
分支是一个陈旧的 cookie,我不再需要它了。
几个月前,我从 master
中创建了一个 0.8/develop
分支,从那时起我们就经历了 0.8/master
, 0.9/develop
, 0.9/master
我们目前在 1.0/develop
。我想摆脱 master
分支,主要是因为它不符合我们已经建立的命名约定。这只是家务管理的问题。
我在SO上找到了几个相关的问题,还有一篇博文,但是它们似乎都是针对GitHub的使用,而不是我自己的私有(private)服务器:
- I can't delete a remote master branch on git
- http://matthew-brett.github.io/pydagogue/gh_delete_master.html
这两个都具体说了一些大意:
You need to go to the main GitHub page for your forked repository, and click on the 'Settings' button.
当然,这不是一个选项,因为我没有使用 GitHub。我猜我可以在我的裸仓库中编辑配置文件的内容来获得相同的结果。那是对的吗?配置文件当前如下所示:
[core]
repositoryformatversion = 0
filemode = true
bare = true
logallrefupdates = true
ignorecase = true
precomposeunicode = false
sharedRepository = group
[remote "origin"]
url = file:///Library/WebServer/Documents/loupe
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
我有两个问题:
- 我应该将我的默认存储库设置为我当前的工作分支 (
1.0/develop
),还是剩下的最旧的分支 (0.8/develop
)? - 我需要对配置文件进行哪些修改才能设置默认存储库?
最佳答案
首先决定在克隆存储库时哪个分支应该是默认分支。对于此示例,我假设为 new_master
。
在其中一个客户端上,在远程存储库上创建 new_master
分支,您可以使用 master
的任何内容,例如提交或另一个分支名称,或者如果您在远程上已有合适的分支,则跳过此步骤。
git push origin master:new_master
下一步不能从远程完成,所以在远程存储库中执行命令(例如使用 SSH):
cd /path/to/my_git_repo
git symbolic-ref HEAD refs/heads/new_master
或者,直接更改HEAD
文件的内容。
回到客户端:
git fetch
git remote show origin
您应该看到 HEAD
指向 new_master
而不是 master
(或者 HEAD
是不明确的,如果您将 new_master
设置为 master
)。现在我们可以移除旧的 master 了:
git push origin :master
Git 不应该再提示删除了。最后,设置本地refs/remotes/origin/HEAD
:
git remote set-head origin -a
关于git - 删除私有(private)服务器(不是 GitHub)上的 git master 分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17558679/