Bitbucket: verwijder de map uit de Git-geschiedenis

Er is een harde limiet van 2 GB bij het hosten van Git op Bitbucket - als dit wordt overschreden, heb je alleen read-only toegang tot de repository. Om dit te voorkomen verwijder je bijvoorbeeld met terugwerkende kracht grote mappen of bestanden uit je commits. Maar ook in andere gevallen (als toegangsgegevens de geschiedenis zijn binnengekomen of node_modules weer op de master zijn terechtgekomen), moet je de geschiedenis van Git retrospectief manipuleren in tegenstelling tot de aard ervan.


Bitbucket heeft hierover een gedetailleerd artikel geschreven. Om de hele zaak in één geval te doorlopen, maken we eerst een nieuwe repository:

bitbucket-geschiedenis schoon

Vervolgens klonen we de repository in een lege map op de lokale computer:

6ab7686fc508ce87c52b10bb5d01ee51

Nu maken we twee submappen met bestanden met willekeurige inhoud:

6ab7686fc508ce87c52b10bb5d01ee51

We dringen nu op meester:

6ab7686fc508ce87c52b10bb5d01ee51

We hebben nu bijna de harde limiet van 2 GB op Bitbucket bereikt:

bitbucket-geschiedenis schoon

We kunnen dit ook lokaal controleren (zie "size-pack"):

6ab7686fc508ce87c52b10bb5d01ee51

bitbucket-geschiedenis schoon

De taak is nu om "foo" met terugwerkende kracht uit de repository te verwijderen om de grootte ervan te halveren. Om dit te doen, bewerken we eerst de huidige HEAD en schrijven we de map in de gitignore:

6ab7686fc508ce87c52b10bb5d01ee51

Ten slotte gebruiken we de BFG Repo Cleaner om de map te verwijderen (BFG vereist een actuele JRE op het systeem als systeemvereiste):

6ab7686fc508ce87c52b10bb5d01ee51

We zien het resultaat nu lokaal:

6ab7686fc508ce87c52b10bb5d01ee51

bitbucket-geschiedenis schoon

De grootte van de repository is echter nog niet gewijzigd op Bitbucket omdat de garbage collector nog niet op afstand is uitgevoerd en bitbucket voert niet bij elke push een "git gc" uit:

bitbucket-geschiedenis schoon

Ondersteuning bevestigt dit ook:

bitbucket-geschiedenis schoon

Het is dus het beste om een ​​verzoek rechtstreeks naar support@bitbucket.org te sturen om "git gc" handmatig in de repository uit te voeren. Na een korte tijd werd dit ook gedaan door het ondersteuningsteam:

bitbucket-geschiedenis schoon

Als je de repository nu "vers" naar een andere computer sleept, komt er slechts 0,9 GB op de schijf terecht. Als iemand de versie van 1.8 GB nog lokaal beschikbaar heeft, is een "git pull" gevolgd door "git gc" voldoende.

Terug