删除私有服务器(不是GitHub)上的git master分支

Ben*_*old 5 git branching-and-merging git-branch

我有一个项目托管在我自己的个人git服务器上(它不在GitHub上).该master分支是一个陈旧的旧Cookie,而且我不需要它了.

几个月前,我创建了一个0.8/develop分叉的master,从那时起,我们已经经历了0.8/master,0.9/develop,0.9/master和我们目前对1.0/develop.我想摆脱master分支,主要是因为它与我们建立的命名约定不符.这只是家务管理的问题.

我在SO上发现了几个相关的问题,以及博客文章,但它们似乎都特定于使用GitHub,而不是我自己的私人服务器:

这些都具体说明了以下内容:

您需要转到分叉存储库的主GitHub页面,然后单击"设置"按钮.

当然,这不是一个选项,因为我没有使用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
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 我应该将默认仓库设置为当前工作分支(1.0/develop),还是最左边的分支(0.8/develop)?
  2. 我需要对配置文件进行哪些修改才能设置默认仓库?

nif*_*nif 7

首先确定在克隆存储库时哪个分支应该是默认分支.我假设new_master这个例子.

在其中一个客户端上创建new_master远程存储库上的分支,您可以使用任何内容master,例如提交或其他分支名称,或者如果您已在远程数据库上拥有合适的分支,则跳过此步骤.

git push origin master:new_master
Run Code Online (Sandbox Code Playgroud)

下一步无法从远程执行,因此请在远程存储库中执行该命令(例如,使用SSH):

cd /path/to/my_git_repo
git symbolic-ref HEAD refs/heads/new_master
Run Code Online (Sandbox Code Playgroud)

或者,HEAD直接更改文件的内容.

回到客户端:

git fetch
git remote show origin
Run Code Online (Sandbox Code Playgroud)

您应该看到的是,HEADnew_master,而不是master(或者说HEAD是模糊的,如果你设置new_mastermaster).现在我们可以删除旧的主人:

git push origin :master
Run Code Online (Sandbox Code Playgroud)

Git不应再抱怨删除了.最后,设置本地refs/remotes/origin/HEAD:

git remote set-head origin -a
Run Code Online (Sandbox Code Playgroud)