Bitbucket: ta bort mapp från Git-historik

Det finns en hård gräns på 2 GB när du är värd för Git på Bitbucket - om detta överskrids har du endast skrivskyddad åtkomst till förvaret. För att förhindra detta, till exempel, tar retrospektivt bort stora mappar eller filer från dina åtaganden. Men även i andra fall (om åtkomstdata har gått in i historiken eller node_moduler har glidit på master igen), måste du retrospektivt manipulera Gits historia i motsats till dess natur.


Bitbucket har skrivit en detaljerad artikel om detta. För att gå igenom hela saken i ett fall skapar vi först ett nytt arkiv:

bitbucket historia ren

Sedan klonar vi förvaret i 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å master:

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 storleken. 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 BFG Repo Cleaner (BFG kräver en aktuell JRE på systemet som ett systemkrav):

6ab7686fc508ce87c52b10bb5d01ee51

Vi ser nu resultatet lokalt:

6ab7686fc508ce87c52b10bb5d01ee51

bitbucket historia ren

Förvarets storlek har emellertid ännu inte ändrats på Bitbucket eftersom avfallssamlaren ännu inte har körts på distans och bitbucket kör inte en "git gc" med varje tryck:

bitbucket historia ren

Support bekräftar också detta:

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 gjorde supportteamet också detta:

bitbucket historia ren

Om du nu "färskt" drar förvaret till en annan dator kommer bara 0,9 GB att hamna på disken. Om någon fortfarande har 1,8 GB-versionen tillgänglig lokalt räcker en "git pull" följt av "git gc".

Tillbaka