1. 为什么你的master分支删不掉?先搞懂“默认”和“受保护”这两个概念
很多朋友在GitLab上想清理一下混乱的master分支,结果一操作就傻眼了——那个红色的删除按钮是灰色的,根本点不了!这事儿我遇到过不止一次,尤其是团队刚接手一个历史包袱很重的老项目,或者想彻底重构代码库的时候。你可能会想,不就是删个分支吗,怎么这么麻烦?别急,这恰恰是GitLab设计得比较周到的地方,它在用这种方式提醒你:“兄弟,你正在动的是最重要的主干道,请三思而后行。”
简单来说,GitLab给master分支(现在很多新项目也叫main分支)套上了两层“金钟罩”。第一层叫默认分支(Default Branch),你可以把它理解成项目的“正门”或者“接待大厅”。任何人新克隆你的项目,或者打开项目的Web页面,GitLab首先展示的就是这个分支。它代表了项目的“门面”和主要开发轴线。第二层叫受保护分支(Protected Branch),这是一套权限和安全规则。一旦分支被保护起来,就意味着不是谁都能对它进行“破坏性”操作,比如强制推送(git push -f)、直接推送代码,或者就是我们今天要做的——删除分支。通常,团队会设置只有项目维护者(Maintainer)或拥有特定权限的人才能操作受保护分支。
所以,当你看到一个分支既是“默认”又是“受保护”时,它就进入了“超级保险”状态。GitLab的逻辑是:这么重要的分支,怎么能让你随手一点就删了呢?必须得经过几个明确的、有意识的设置步骤才行。这就像你家保险箱,既要打开外面的柜门(取消默认),又要输入密码(解除保护),最后才能碰到里面的东西。理解了这个设计初衷,后面的操作步骤就顺理成章了,我们不是要“破解”它,而是按照它预设的“安全流程”来走。
2. 动手前的绝对关键:风险评估与完整备份方案
在动鼠标去点任何设置之前,咱们先停下来,花五分钟做一件比技术操作更重要一百倍的事:风险评估和备份。我见过有团队一时手快,删了master分支后发现有个关键的Hotfix提交只存在于那个分支上,还没合并到其他地方,最后只能挠着头从本地某个同事的电脑里翻找,场面一度十分尴尬。所以,老规矩,先备份,再操作,心里不慌。
第一步,代码备份。 最保险的方法,就是把远程仓库完整地克隆一份到你的本地,或者另一个你绝对有控制权的地方。打开你的终端,执行:
git clone <你的GitLab项目地址> backup_project_master
cd backup_project_master
这样你就有了一个完整的本地副本。但仅仅克隆还不够,因为我们要删的是远程分支。你需要确保master分支上所有有价值的提交,都已经在其他分支上有了“备份”。最好的方法是创建一个归档分支。比如,你可以从当前的master分支切出一个存档分支:
git checkout master
git checkout -b archive/master_backup_YYYYMMDD
git push origin archive/master_backup_YYYYMMDD
这个archive/master_backup_YYYYMMDD分支就是你master分支此刻的“快照”。即使后续操作全部出错,你也能从这个分支恢复所有代码。
第二步,数据备份。 除了代码,GitLab项目里还有什么?Issues(问题)、Merge Requests(合并请求)、Wiki文档、CI/CD流水线配置(.gitlab-ci.yml)、项目变量等等。对于这些,GitLab提供了非常方便的导出功能。进入你的项目,点击左侧边栏的 Settings -> General,然后一直往下拉,找到 Advanced


279

被折叠的 条评论
为什么被折叠?



