Bitbucket: διαγραφή φακέλου από το ιστορικό Git

Κατά τη φιλοξενία του Git στο Bitbucket υπάρχει ένα σκληρό όριο 2 GB - εάν αυτό ξεπεραστεί, έχετε μόνο πρόσβαση μόνο για ανάγνωση στο αποθετήριο. Για να το αποτρέψετε, για παράδειγμα, καταργείτε αναδρομικά μεγάλους φακέλους ή αρχεία από τις δεσμεύσεις σας. Αλλά και σε άλλες περιπτώσεις (εάν τα δεδομένα πρόσβασης έχουν εισαγάγει το ιστορικό ή τα node_modules έχουν περάσει ξανά στο master), πρέπει να χειριστείτε αναδρομικά την ιστορία του Git αντίθετα με τη φύση του.


Το Bitbucket έχει γράψει ένα λεπτομερές άρθρο σχετικά με αυτό. Για να εξετάσουμε το όλο θέμα σε μία περίπτωση, πρώτα δημιουργούμε ένα νέο αποθετήριο:

καθαρό ιστορικό bitbucket

Στη συνέχεια κλωνοποιήσαμε το αποθετήριο σε έναν κενό φάκελο στον τοπικό υπολογιστή:

6ab7686fc508ce87c52b10bb5d01ee51

Τώρα δημιουργούμε δύο υποφακέλους με αρχεία τυχαίου περιεχομένου:

6ab7686fc508ce87c52b10bb5d01ee51

Τώρα πιέζουμε τον πλοίαρχο:

6ab7686fc508ce87c52b10bb5d01ee51

Τώρα φτάσαμε σχεδόν στο σκληρό όριο των 2 GB στο Bitbucket:

καθαρό ιστορικό bitbucket

Μπορούμε επίσης να το ελέγξουμε τοπικά (βλέπε "μέγεθος-πακέτο"):

6ab7686fc508ce87c52b10bb5d01ee51

καθαρό ιστορικό bitbucket

Ο στόχος τώρα είναι να αφαιρέσετε αναδρομικά το "foo" από το αποθετήριο για να μειώσετε κατά το ήμισυ το μέγεθός του. Για να γίνει αυτό, επεξεργαζόμαστε πρώτα το τρέχον HEAD και γράφουμε το φάκελο στο gitignore:

6ab7686fc508ce87c52b10bb5d01ee51

Τέλος, χρησιμοποιούμε το BFG Repo Cleaner για να αφαιρέσουμε το φάκελο (το BFG απαιτεί ένα τρέχον JRE στο σύστημα ως απαίτηση συστήματος):

6ab7686fc508ce87c52b10bb5d01ee51

Βλέπουμε τώρα το αποτέλεσμα τοπικά:

6ab7686fc508ce87c52b10bb5d01ee51

καθαρό ιστορικό bitbucket

Ωστόσο, το μέγεθος του χώρου αποθήκευσης δεν έχει αλλάξει ακόμη στο Bitbucket επειδή ο συλλέκτης απορριμμάτων δεν έχει εκτελεστεί ακόμη εξ αποστάσεως και το bitbucket δεν εκτελεί "git gc" με κάθε ώθηση:

καθαρό ιστορικό bitbucket

Η υποστήριξη επιβεβαιώνει επίσης αυτό:

καθαρό ιστορικό bitbucket

Επομένως, είναι καλύτερο να στείλετε ένα αίτημα απευθείας στο support@bitbucket.org για να εκτελέσετε μη αυτόματα το "git gc" στο αποθετήριο. Μετά από λίγο, αυτό έγινε και από την ομάδα υποστήριξης:

καθαρό ιστορικό bitbucket

Εάν τώρα "πρόσφατα" σύρετε το αποθετήριο σε άλλον υπολογιστή, μόνο 0,9 GB θα καταλήξουν στο δίσκο. Εάν κάποιος εξακολουθεί να διαθέτει την έκδοση 1,8 GB τοπικά, αρκεί ένα "git pull" ακολουθούμενο από το "git gc".

Πίσω