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".

Πίσω