Bitbucket: Ta bort mapp från Git-historik

När du är värd för Git på Bitbucket finns det en hård gräns på 2 GB - om detta överskrids har du bara skrivskyddad åtkomst till förvaret. För att förhindra detta kan du till exempel ta bort stora mappar eller filer i efterhand från dina åtaganden. Men även i andra fall (om åtkomstdata har gått in i historiken eller nod_modules har glidit tillbaka till master) måste du retroaktivt manipulera Git-historien, i motsats till dess natur.


Bitbucket har skrivit en detaljerad artikel om detta själv. För att gå igenom det hela på ett ärende skapar vi först ett nytt arkiv:

bitbucket historia ren

Sedan klonar vi förvaret till en tom mapp på den lokala maskinen:

6ab7686fc508ce87c52b10bb5d01ee51

Nu skapar vi två undermappar med filer med slumpmässigt innehåll:

6ab7686fc508ce87c52b10bb5d01ee51

Vi driver nu på mästaren:

6ab7686fc508ce87c52b10bb5d01ee51

Nu har vi nästan nått den hårda gränsen på 2 GB på Bitbucket:

bitbucket historia ren

Vi kan också kontrollera detta lokalt (se "storlek-pack"):

6ab7686fc508ce87c52b10bb5d01ee51

bitbucket historia ren

Uppgiften är nu att retroaktivt ta bort "foo" från förvaret för att halvera dess storlek. För att göra detta redigerar vi först den aktuella HEAD och skriver mappen i gitignore:

6ab7686fc508ce87c52b10bb5d01ee51

Slutligen tar vi bort mappen med hjälp av BFG Repo Cleaner (BFG kräver en aktuell JRE på systemet som ett systemkrav):

6ab7686fc508ce87c52b10bb5d01ee51

Vi kan nu se resultatet lokalt:

6ab7686fc508ce87c52b10bb5d01ee51

bitbucket historia ren

Förvarets storlek har dock inte ändrats på Bitbucket eftersom skräpsamlaren ännu inte har utförts på distans och bitbucket utför inte ett "git gc" med varje tryck:

bitbucket historia ren

Detta bekräftas också av stödet:

bitbucket historia ren

Så det är bäst att skicka en begäran direkt till support@bitbucket.org för att manuellt köra "git gc" i förvaret. Efter en kort tid gjordes detta också av supportteamet:

bitbucket historia ren

Om du "nyligen" flyttar förvaret till en annan dator hamnar bara 0,9 GB på disken. Om någon har 1,8 GB-versionen tillgänglig lokalt är en "git pull" följt av "git gc" tillräcklig.

Tillbaka