如何重置/清理 GitLab 存储库

Posted

技术标签:

【中文标题】如何重置/清理 GitLab 存储库【英文标题】:How to reset / clean a GitLab repository 【发布时间】:2019-05-15 07:02:04 【问题描述】:

我想在 gitlab 上重置我的一个存储库,但不删除整个项目。

我在 Gitlab 论坛(帖子 https://forum.gitlab.com/t/how-can-i-delete-a-repository-and-push-a-new-one/690)上阅读了两个不同的选项:

首先:从磁盘中删除物理存储库。我已经尝试重命名文件夹(repo.git),但是 gitlab 给我一个 404 错误,试图访问它。

第二:删除所有分支。该解决方案也不起作用,因为我无法删除主分支(在我的案例主分支上),并且当我创建一个新分支时,新分支需要指定一个“原始”分支。我无法创建一个没有任何数据的干净分支并将主分支更改为它。

有人知道怎么做吗?

谢谢,

【问题讨论】:

“重置我在 gitlab 上的一个仓库,但不删除整个项目”这是什么意思? 我说的是只清理git仓库,不影响问题/cmets/code sn-ps等 那么你就不能删除所有文件,把它变成一个提交,然后推送它吗?或者你的意思是你想删除整个历史?如果是后者,这已经很好地讨论过了,例如***.com/questions/9683279/… 【参考方案1】:

删除除master以外的所有分支,取消保护settings -> repository -> protected branches中的master并执行:

git push -f master origin.

【讨论】:

嘿,谢谢这更容易解决我的问题! 这不起作用: $ git push -f master origin 。致命:无效的参考规范'。' 提交,否则会报错【参考方案2】:

有一个解决方法,它对我有用。首先,在项目的设置/存储库页面将默认分支更改为非主分支,然后删除主分支并将新文件推送到主分支,最后将默认分支更改回主分支并删除所有其他分支不想。

【讨论】:

【参考方案3】:

如果您想删除分支的历史记录,Matt 已经建议了与我相同的策略。 唯一想说的是“取消保护”受保护的分支,否则您可能会遇到这样的错误:

git push -f origin last_known_good_commit:branch_name

远程:GitLab:您不能强制将代码推送到该项目的受保护分支。

转到您的项目“存储库设置/受保护的分支”并取消保护它。进行更新操作后,您可以再次保护您的分支。 如果您正在与同一项目的其他人合作,请小心重写存储库历史记录。

【讨论】:

【参考方案4】:

我一直在问自己同样的问题,并且遇到了你提到的同样的问题。我的存储库中有很多以前不应该存在的杂物,这就是我想这样做的原因。我可以轻松地将我的本地 repo 减少到

我想我已经找到了一种方法。首先导出您当前的 repo 并从 gitlab 下载 tar.gz 文件(其中包含 repo、问题等)。然后创建 / 修改 / 任何你想用新的 repo 替换现有的 repo。准备好后,创建该新存储库的捆绑包,即:您想要的那个(来自该存储库):

git bundle create /tmp/project.bundle --all

然后将下载的tar.gz中的project.bundle替换为新的project.bundle

现在您可以通过导入该 tar.gz 在 gitlab 上创建一个新项目,并且希望您的所有问题、标签等都来自原始项目,但使用新存储库。

现在您可以重命名旧的和新的存储库,希望您应该一切顺利。我知道这并不理想,但在我的情况下,这是我想要保留的问题历史记录,以及一个精简版的 repo。

希望这会有所帮助!

【讨论】:

以上是关于如何重置/清理 GitLab 存储库的主要内容,如果未能解决你的问题,请参考以下文章

如何删除所有 Gitlab 存储库?

如何使用 CLI 从我现有的本地 git 存储库创建新的 gitlab 存储库?

如何授予用户级别访问私有 GitLab 存储库的权限?

如何从 ssh git 存储库 url 导入 gitlab 中的存储库?

如何使用 gitlab-ci 作业推送到 gitlab 存储库?

如何在私有 GitLab 存储库中使用 Go