【问题标题】:Best way to create a new repository after executing git-filter-repo执行 git-filter-repo 后创建新存储库的最佳方法
【发布时间】:2021-04-10 07:21:23
【问题描述】:

我想拆分我的存储库,我的结论是我应该创建一个新的存储库,在其中使用 git-filter-repo 删除不需要的部分。

在阅读了大量有关它的文档后,我很确定我应该如何使用git-filter-repo,但我错过了如何以正确的方式执行其他步骤。

这是我想出的方法,但我希望您能就它是否正确,或者我是否缺少某些东西提出建议。 我正在为我的存储库使用 bitbucket,当我试用它时,bitbucket Web 界面非常慢,有时它无法列出分支等。

首先我在 bitbucket 上创建一个新的空仓库 repo2。 然后我执行以下序列:

git clone --bare --mirror https://user@bitbucket.com/workspace/repo1
cd repo1
git filter-repo --path <path to remove> --invert-paths
git remote add origin https://user@bitbucket.com/workspace/repo2
git push --mirror

请注意,git filter-repo 将删除原始远程路径到源。

我不确定是否应该在克隆和推送上使用 --mirror 或其他东西。有些文件说我应该使用git push -u origin --all,但我想在那之后会丢失一些引用。

为什么 bitbucket 列出我的新 repo2 这么慢?它还列出了只有几 kB 的大小,但它似乎包含了我想要的一切。只是服务器更新需要一些时间吗?

【问题讨论】:

  • --all for git push 表示所有分支名称,即refs/heads/*:refs/heads/*--mirror 表示所有引用,因此它也包含标签名称。我猜 Bitbucket 确实只是更新一些统计数据的速度很慢。

标签: git bitbucket git-remote git-filter-repo


【解决方案1】:

我直接从 bitbucket 工作人员那里得到了一些支持,证实了这种方法是正确的。然而,随着时间的推移,web gui 中的滞后响应并没有自行解决。 解决方案似乎是要求 bitbucket 支持在服务器上运行 git gc -- aggressive 通过删除悬空指针等来“修复”存储库。

我还尝试在推送 repo 之前在本地运行git gc -- aggressive,这大大改善了情况,但不如在服务器上运行它。

由于我在任何其他帖子中都找不到此问题,因此希望其他人可以使用此信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-20
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 2019-12-24
    相关资源
    最近更新 更多