【问题标题】:Delete git master branch on a private server (not GitHub)删除私有服务器(不是 GitHub)上的 git master 分支
【发布时间】:2013-07-07 16:14:31
【问题描述】:

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

几个月前,我从master 创建了一个0.8/develop 分支,从那时起我们经历了0.8/master0.9/develop0.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

我有两个问题:

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

【问题讨论】:

  • git push origin :master, git remote prune origin
  • @madhead remote: error: 默认情况下,拒绝删除当前分支,因为 next remote: error: 'git clone' 不会导致任何文件被检出,造成混乱。跨度>
  • 基本上你正在尝试做一些你真的不需要做的事情。无论您选择什么,只需让 master 过时或保持最新。没有理由删除它。
  • @NathanBouscal 我同意我不需要删除它,但我想要删除它。
  • 版本应该是标签。我推荐这个:nvie.com/posts/a-successful-git-branching-model

标签: git git-branch branching-and-merging


【解决方案1】:

首先决定在克隆存储库时哪个分支应该是默认分支。对于这个例子,我假设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(或者如果您将new_master 设置为master,则HEAD 是不明确的)。现在我们可以移除旧的主人了:

git push origin :master

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

git remote set-head origin -a

【讨论】:

  • 太棒了!您是否建议选择较旧的0.8/develop 或较新的1.0/develop 作为新主人...或者这有关系吗?
  • 这只是当有人第一次克隆存储库时签出的分支。我们的master/HEAD反映了当前的生产状态,而其他分支则用于积极开发。但这只是我们的工作流程。将其设置为适合您的工作流程的任何内容。
  • 这与 GitHub 在改变技术语言方面引领行业的关系现在更加重要。 (github.com/github/renaming) 我发现这个 StackOverflow 问题/答案是因为我想将我的“主”分支重命名为“主”。谢谢。
猜你喜欢
  • 1970-01-01
  • 2021-07-20
  • 2012-08-25
  • 2019-05-28
  • 2020-05-06
  • 2015-11-15
  • 2021-05-11
  • 1970-01-01
  • 2016-06-28
相关资源
最近更新 更多