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

标签 git git-branch branching-and-merging

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

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

我在SO上找到了几个相关的问题,还有一篇博文,但是它们似乎都是针对GitHub的使用,而不是我自己的私有(private)服务器:

这两个都具体说了一些大意:

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. 我应该将我的默认存储库设置为我当前的工作分支 (1.0/develop),还是剩下的最旧的分支 (0.8/develop)?
  2. 我需要对配置文件进行哪些修改才能设置默认存储库?

最佳答案

首先决定在克隆存储库时哪个分支应该是默认分支。对于此示例,我假设为 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/

相关文章:

git - "svn update -r"的 git 等价物是什么?

git - 如何创建远程 Git 分支?

svn - 如何让开发人员记住在各处合并他们的错误修复?

git - Intellij 2020.1 显示 VCS 更改的快捷方式(模态提交对话)

git - 我无法从 GitLab 克隆存储库

git - 将 git rm -f <file> 从另一个分支中删除文件

git - merge 和推送到远程时,有什么方法可以忽略本地提交历史记录吗?

version-control - TFS:跨团队项目共享脚本的分支注意事项

fossil - 如何在 Fossil 中闭合叶子

git - checkout 并不允许更改 git 中的文件