Git मध्ये ब्लॉब स्ट्रिपिंग समजून घेणे
Git मध्ये, मोठ्या फायली व्यवस्थापित करणे एक आव्हान असू शकते, विशेषत: जेव्हा त्यांना कार्यरत कॉपीमध्ये यापुढे आवश्यक नसते. BFG आणि Git Filter-Repo सारखी साधने या मोठ्या फाइल्स तुमच्या भांडाराच्या इतिहासातून काढून टाकण्यासाठी उपाय देतात. तथापि, BFG प्रमाणे Git Filter-Repo सोबत समान परिणाम प्राप्त करणे अवघड असू शकते.
हा लेख BFG कमांडची प्रतिकृती कशी बनवायची याचे अन्वेषण करतो --स्ट्रिप-ब्लॉब्स-पेक्षा मोठे Git Filter-Repo वापरून. आम्ही सामान्य समस्यांचे निराकरण करू आणि अद्याप वापरात असलेल्या फायली चुकून न काढता तुम्ही तुमची भांडार प्रभावीपणे साफ करू शकता याची खात्री करण्यासाठी चरण-दर-चरण मार्गदर्शक प्रदान करू.
आज्ञा | वर्णन |
---|---|
from git import Repo | Git रिपॉजिटरीशी संवाद साधण्यासाठी GitPython लायब्ररीचा रेपो वर्ग आयात करतो. |
git_filter_repo import RepoFilter | रेपॉजिटरी ब्लॉब्स फिल्टर करण्यासाठी git-filter-repo वरून RepoFilter वर्ग आयात करते. |
repo = Repo(repo_path) | निर्दिष्ट रेपॉजिटरी मार्गाकडे निर्देशित करणारे रेपो ऑब्जेक्ट आरंभ करते. |
RepoFilter(repo).filter_blobs(filter_large_blobs) | रेपॉजिटरीमधून मोठे ब्लॉब काढण्यासाठी कस्टम फिल्टर फंक्शन लागू करते. |
git rev-list --objects --all | रेपॉजिटरीमध्ये ब्लॉब्स, ट्री आणि कमिटसह सर्व वस्तूंची यादी करते. |
git cat-file --batch-check | वस्तूंबद्दल तपशीलवार माहिती प्रदान करते, त्यांच्या आकारासह. |
xargs -n 1 git filter-repo --strip-blobs-bigger-than $SIZE_LIMIT | ओळखलेल्या प्रत्येक मोठ्या ब्लॉबवर git filter-repo कमांड लागू करण्यासाठी xargs वापरते. |
प्रदान केलेल्या स्क्रिप्ट कसे कार्य करतात
पायथन स्क्रिप्ट गिट रेपॉजिटरीशी संवाद साधण्यासाठी GitPython लायब्ररीचा वापर करते. वापरून रेपॉजिटरी आरंभ केली जाते from git import Repo आणि १, निर्दिष्ट रेपॉजिटरी मार्गाकडे निर्देश करत आहे. स्क्रिप्ट नंतर फिल्टर फंक्शन परिभाषित करते filter_large_blobs(blob) 10MB पेक्षा मोठे ब्लॉब ओळखण्यासाठी. हे फिल्टर वापरून लागू केले जाते RepoFilter(repo).filter_blobs(filter_large_blobs), जे हे सुनिश्चित करते की आकार मर्यादा ओलांडलेले ब्लॉब रेपॉजिटरीच्या इतिहासातून काढून टाकले जातात.
शेल स्क्रिप्ट गिट कमांड्स आणि शेल युटिलिटिज वापरून समान ध्येय साध्य करते. सह रेपॉजिटरी निर्देशिकेत नेव्हिगेट करते cd $REPO_PATH आणि वापरून सर्व वस्तूंची यादी करते ५. प्रत्येक ऑब्जेक्ट त्याच्या आकारासाठी तपासला जातो git cat-file --batch-check. निर्दिष्ट आकार मर्यादेपेक्षा मोठ्या वस्तू फिल्टर आणि वापरून प्रक्रिया केल्या जातात ७ लागू करण्यासाठी git filter-repo --strip-blobs-bigger-than $SIZE_LIMIT प्रत्येक ओळखलेल्या मोठ्या ब्लॉबला. ही पद्धत रेपॉजिटरीमधून मोठे ब्लॉब प्रभावीपणे काढून टाकते, अनावश्यक मोठ्या फाइल्सशिवाय स्वच्छ इतिहास सुनिश्चित करते.
आकारानुसार गिट ब्लॉब्स फिल्टर करण्यासाठी पायथन वापरणे
मोठ्या ब्लॉब्स फिल्टर करण्यासाठी पायथन स्क्रिप्ट
# Import necessary modules
import os
from git import Repo
from git_filter_repo import RepoFilter
# Define the repository path and size limit
repo_path = 'path/to/your/repo'
size_limit = 10 * 1024 * 1024 # 10 MB
# Initialize the repository
repo = Repo(repo_path)
# Define a filter function to remove large blobs
def filter_large_blobs(blob):
return blob.size > size_limit
# Apply the filter to the repository
RepoFilter(repo).filter_blobs(filter_large_blobs)
मोठे गिट ब्लॉब ओळखण्यासाठी आणि काढण्यासाठी शेल स्क्रिप्ट वापरणे
गिटमध्ये ब्लॉब व्यवस्थापनासाठी शेल स्क्रिप्टिंग
१
प्रगत गिट फिल्टर-रेपो पर्याय एक्सप्लोर करत आहे
असताना ९ मोठ्या फाइल्स काढून टाकण्यासाठी प्रभावी आहे, तुमच्या रेपॉजिटरी क्लीनअपला सानुकूलित करण्यासाठी अतिरिक्त पर्याय आहेत. उदाहरणार्थ, आपण वापरू शकता --path विशिष्ट फाइल्स किंवा निर्देशिकांपर्यंत ऑपरेशन मर्यादित करण्यासाठी. हे तुम्हाला ब्लॉब काढण्यासाठी तुमच्या रेपॉजिटरीमधील काही विशिष्ट क्षेत्रांना लक्ष्य करण्यास अनुमती देते. दुसरा उपयुक्त पर्याय आहे --invert-paths, जे ऑपरेशनमधून निर्दिष्ट पथ वगळते, कोणत्या फाइल्स अस्पर्शित राहतील यावर अधिक नियंत्रण प्रदान करते.
शिवाय, आपण एकत्र करू शकता --strip-blobs-bigger-than सह --analyze बदल लागू करण्यापूर्वी त्यांचे पूर्वावलोकन करण्यासाठी. हे काय काढले जाईल याचा तपशीलवार अहवाल देऊन अनावधानाने हटवलेले टाळण्यात मदत करते. या प्रगत पर्यायांचा वापर केल्याने तुमच्या रेपॉजिटरी देखभाल कार्यांची लवचिकता आणि अचूकता वाढू शकते, एक स्वच्छ आणि अधिक कार्यक्षम प्रकल्प इतिहास सुनिश्चित करणे.
Git Filter-Repo वर वारंवार विचारले जाणारे प्रश्न
- काय ९ करा?
- हे रेपॉजिटरी इतिहासातून निर्दिष्ट आकारापेक्षा मोठे ब्लॉब काढून टाकते.
- कसे --invert-paths काम?
- हे फिल्टरद्वारे प्रक्रिया करण्यापासून निर्दिष्ट पथ वगळते.
- मी बदल लागू करण्यापूर्वी त्यांचे पूर्वावलोकन करू शकतो का?
- होय, वापरून --analyze बदलांचा तपशीलवार अहवाल देतो.
- मी विशिष्ट फायली किंवा निर्देशिका कशा लक्ष्य करू?
- वापरा --path विशिष्ट मार्गांवर ऑपरेशन्स मर्यादित करण्याचा पर्याय.
- चा उद्देश काय आहे १८ पायथन मध्ये वर्ग?
- हे रेपॉजिटरीमध्ये सानुकूल फिल्टर लागू करण्यास अनुमती देते.
- द्वारे केलेले बदल पूर्ववत करण्याचा मार्ग आहे का git filter-repo?
- एकदा बदल लागू केल्यानंतर, ते सहजासहजी पूर्ववत करता येत नाहीत. प्रथम आपल्या भांडाराचा नेहमी बॅकअप घ्या.
- काय ५ करा?
- हे रेपॉजिटरीमधील सर्व वस्तूंची यादी करते, ज्यामध्ये ब्लॉब्स, ट्री आणि कमिट यांचा समावेश आहे.
- का वापरावे ७ सह git filter-repo?
- ७ आयटमच्या सूचीवर आदेश लागू करण्यात मदत करते, जसे की काढण्यासाठी ओळखले जाणारे मोठे ब्लॉब.
गिट ब्लॉब व्यवस्थापनावर अंतिम विचार
Git रेपॉजिटरीमध्ये मोठ्या फाइल्स प्रभावीपणे व्यवस्थापित करणे कार्यप्रदर्शन आणि स्टोरेज ऑप्टिमाइझ करण्यासाठी आवश्यक आहे. BFG आणि Git Filter-Repo सारखी साधने वापरणे ही प्रक्रिया सुव्यवस्थित करण्यात मदत करते, जरी प्रत्येकाकडे अद्वितीय आदेश आणि पद्धती आहेत. प्रगत पर्यायांचा वापर करून आणि प्रत्येक साधनाचे बारकावे समजून घेऊन, तुमची भांडार स्वच्छ आणि कार्यक्षम राहते याची तुम्ही खात्री करू शकता. डेटा गमावू नये म्हणून महत्त्वपूर्ण बदल करण्यापूर्वी आपल्या भांडाराचा बॅकअप घेणे नेहमी लक्षात ठेवा. धोरणात्मक नियोजनासह या साधनांचे ज्ञान एकत्रित केल्याने तुमच्या आवृत्ती नियंत्रण पद्धतींमध्ये लक्षणीय वाढ होईल.