删除分支后测试Git回购规模缩减

删除分支后测试Git回购规模缩减,git,bfg-repo-cleaner,git-gc,Git,Bfg Repo Cleaner,Git Gc,我有没有办法测试删除几个分支会如何影响git回购的规模。 我有一个git回购协议,有10个有效分支和数百个功能(短期分支) 回购协议非常庞大,克隆速度也很慢。GitLab显示总大小为1.4GB,显示blob总大小为8.4GB 我尝试过一些工具,比如删除不需要的历史记录,但我只设法将1.4 GB减少到1 GB,这还不够 我的策略是将回购分成两部分,并使用多个分支来分离工作流程。我还将在GitLab中添加推送扩展和大小限制,以停止推送垃圾。我们遇到了.rar、.zip、.jar文件、错误推送的个人备

我有没有办法测试删除几个分支会如何影响git回购的规模。 我有一个git回购协议,有10个有效分支和数百个功能(短期分支)

回购协议非常庞大,克隆速度也很慢。GitLab显示总大小为1.4GB,显示blob总大小为8.4GB

我尝试过一些工具,比如删除不需要的历史记录,但我只设法将1.4 GB减少到1 GB,这还不够

我的策略是将回购分成两部分,并使用多个分支来分离工作流程。我还将在GitLab中添加推送扩展和大小限制,以停止推送垃圾。我们遇到了.rar.zip.jar文件、错误推送的个人备份等问题。 然而,我也想知道,我是否能保留我长寿的分支机构的历史。 所以我的问题是:

  • 如果我删除所有短期分支,是否可以看到大小会减少多少
  • 这能在当地实现吗
  • 或者我只需要将所有内容复制到GitLab上的测试repo并删除此测试repo上的分支

  • 回答你的三个问题,我会说是的,可以在本地检查。(取决于你所说的如果我删除了所有短期分支,我将假定它们没有合并)

    您可以克隆repo,为要保留的分支创建本地分支,删除远程分支,并主动执行gc

    然而,我认为这不会像使用BGF repo cleaner删除大型二进制文件那样有帮助。如果您需要跟踪所述二进制文件,则应切换到git LFS以获取这些文件


    您使用BGF的经历似乎很奇怪,如果您正确清理回购协议,我会期望更好的降价。

    回答您的三个问题,我会说是的,可以在本地检查这一点。(取决于你所说的如果我删除了所有短期分支,我将假定它们没有合并)

    您可以克隆repo,为要保留的分支创建本地分支,删除远程分支,并主动执行gc

    然而,我认为这不会像使用BGF repo cleaner删除大型二进制文件那样有帮助。如果您需要跟踪所述二进制文件,则应切换到git LFS以获取这些文件


    您使用BGF的经历似乎很奇怪,如果您正确清理了回购协议,我希望能得到更好的降价。

    我只想发布我在上午回答时采取的步骤:

    因为回购协议有近600家分支机构,我想测试删除近350家分支机构的效果

  • 我像往常一样克隆了存储库
  • 我需要为所有600家分行创建本地分行。我找到了这样做的脚本:
  • 为了验证分支的正确数量,我运行到下面的步骤来计算本地分支的数量
  • 我们的分支名称有一个命名约定(幸运的是),我想测试删除所有分支,除了那些以前缀开头的分支:main\uu。我可以使用以下脚本删除所有其他分支:
  • 我再次运行步骤3中的命令,检查分支的数量,以及git branch,看看分支名称是否都正确

  • 要删除我的远程设备,首先要获得所有远程设备的列表,我运行了:
  • 在这种情况下,用于获取和推送的远程设备是源站,要删除它:我运行了:

    git remote rm origin
    
    然后我再次运行了
    git remote-v
    ,但没有返回任何结果,以检查删除是否成功

  • 要清理本地存储库(并在删除本地分支后确定大小缩减),我运行了以下命令:

  • 运行
    git gc
    后,回购规模减少了约600 MB,git sizer显示了类似的减少。

    我只想发布我在上午回答时采取的步骤。答案:

    因为回购协议有近600家分支机构,我想测试删除近350家分支机构的效果

  • 我像往常一样克隆了存储库
  • 我需要为所有600家分行创建本地分行。我找到了这样做的脚本:
  • 为了验证分支的正确数量,我运行到下面的步骤来计算本地分支的数量
  • 我们的分支名称有一个命名约定(幸运的是),我想测试删除所有分支,除了那些以前缀开头的分支:main\uu。我可以使用以下脚本删除所有其他分支:
  • 我再次运行步骤3中的命令,检查分支的数量,以及git branch,看看分支名称是否都正确

  • 要删除我的远程设备,首先要获得所有远程设备的列表,我运行了:
  • 在这种情况下,用于获取和推送的远程设备是源站,要删除它:我运行了:

    git remote rm origin
    
    然后我再次运行了
    git remote-v
    ,但没有返回任何结果,以检查删除是否成功

  • 要清理本地存储库(并在删除本地分支后确定大小缩减),我运行了以下命令:

  • 运行
    git gc
    后,回购大小减少了约600 MB,git sizer显示出类似的减少。

    分支已经合并,它们大多是过时的功能分支。我不得不多次运行BFG(有时使用相同的参数,因为它会发现更多要删除的参数)按文件名、blob ID等进行删除。我看到它大大增加了提交的数量,但只清理了大约400 MB。我可能会更积极地处理我想删除的内容。但我真的很想重新开始,因为这可能是实现所需尺寸缩减的唯一途径。由于这些是远程分支,因此我需要在本地签出所有分支?如果它们已合并,您将无法在保留历史的同时删除它们。干净状态下当前代码的大小是多少?(制作回购协议的本地副本,删除所有非
    git branch | grep -v "main_" | xargs git branch -D
    
    git remote -v
    
    git remote rm origin
    
    git reflog expire --expire=now --all && git gc --prune=now --aggressive