在不破坏存储库的情况下重置存储库

时间:2021-03-29 15:24:04

标签: git gitlab

我们目前有一个大约有 40,000 次提交的存储库,它开始出现 gitlab 问题,特别是每周健康检查失败。这是一个已经运行多年的非常古老的存储库。

由于启动一个新项目会导致新的项目 ID 导致我们的问题跟踪器出现问题,是否有可能/一个合理的想法是执行以下操作:

  1. 创建一个新项目,将当前 repo 推送到该项目中(作为备份)
  2. 基于 master 创建一个临时分支
  3. 删除master,新建master分支
  4. merge --squash 临时分支回到主分支

没有人直接在 master 上工作,它仅用于部署。当一个 MR 被接受时,它会被合并到 master 中,一些文件被更新,一个新标签被标记为下一个版本 ID。所有正在运行的进程都将该标记用作检出点,而不仅仅是主分支。

最后,这会有所帮助,还是只会把事情搞砸?

1 个答案:

答案 0 :(得分:1)

正如 Asif Kamran Malick 所建议的,orphan branch 可以提供帮助:

  • 检查旧的主/主
    git checkout master
  • 创建一个备份分支
    git checkout -b backup
  • 删除旧的 master 分支(这样我们就可以使用相同的名称)
    git branch -D master
  • 创建一个没有任何历史记录的新主分支
    git checkout --orphan master
  • 将您最新的文件/代码添加到这个新分支(在我的快速测试中,结帐将所有文件保留在工作目录中)
    git commit --all -m "Add latest files in one fresh commit"
  • 将新的 master 推送到您的 Git 服务器,例如 Github/Gitlab/...(您可能需要先在远程删除它,或者如果可能的话强制推送)

不过,这是一个相当粗糙的过程,因此请确保所有同事都使用新的 master 来创建新功能(否则您将再次合并所有历史记录)并准备好在过渡期间处理问题。

>