গিট সংগ্রহস্থলের আকার হ্রাস করুন


290

আমি রেপোর আকার হ্রাস করার জন্য একটি ভাল টিউটোরিয়াল সন্ধান করার চেষ্টা করেছি, কিন্তু কিছুই পাই নি। আমি কীভাবে আমার রেপোর আকার হ্রাস করব ... এটি প্রায় 10 মেগাবাইট, তবে জিনিস হিরোকু কেবল 50 এমবি অনুমতি দেয় এবং আমি আমার অ্যাপ্লিকেশন বিকাশ শেষ করতে পারছি না।

আমি ইতিমধ্যে .gitignore এ সাধারণ সন্দেহভাজনদের (লগ, বিক্রেতা, ডক ইত্যাদি) যুক্ত করেছি। যদিও আমি সম্প্রতি .gitignore যুক্ত করেছি।

কোন পরামর্শ?


1
আমি সবেমাত্র করেছি এবং এটি ২.২ এমবি নামিয়ে নিয়ে এসেছি ... অনেক অনেক ধন্যবাদ! যদিও এটি হিরোকুতে রেপো আকার হ্রাস করবে বলে মনে হচ্ছে না..হুম
প্রেরণ-

11
- ফোর্স ব্যবহার করে এটি পুশ করুন। এটি কোনও পরিবর্তন না হলেও এমনকি সামগ্রীতে ওভাররাইট করা হবে (কোনও নতুন চুক্তি ইত্যাদি নেই)
মার্সিন গিল

1
@ মার্সিনগিল - নীচে, ভনসি জানিয়েছে যে রিমোট সার্ভারটি পরিষ্কার করার জন্য আপনার সার্ভারের অ্যাক্সেস প্রয়োজন (যদি আমি এটি সঠিকভাবে পার্স করছি)।
jww

1
অন্যান্য পাঠকদের কী যোগ করতে হবে তা যদি না জানে তবে তাদের কেবলমাত্র একটি মন্তব্য .gitignore, gitignore.io এ একটি দুর্দান্ত পরিষেবা রয়েছে যা আপনাকে .gitignoreআপনার দেব পরিবেশের উপর ভিত্তি করে একটি ভাল সেট আপ করতে সহায়তা করবে ।
ব্লেয়ারজ 23

উত্তর:


351

git gc --aggressiveছাঁটাই প্রক্রিয়াটি করার জন্য বাধ্য করার এক উপায় (নিশ্চিত হওয়ার জন্য git gc --aggressive --prune=now:)। রেপোও পরিষ্কার করার জন্য আপনার কাছে অন্যান্য কমান্ড রয়েছে । যদিও ভুলবেন না, কখনও কখনও git gcএকা রেপোর আকার বাড়াতে পারে !

এটি এ এর ​​পরেও ব্যবহার করা filter-branchযেতে পারে, ইতিহাস থেকে মুছে ফেলার জন্য কয়েকটি ডিরেক্টরি চিহ্নিত করতে (স্থানের আরও লাভের সাথে); দেখতে এখানে । তবে এর অর্থ আপনার পাবলিক রেপো থেকে কেউ টানছেন না। filter-branchব্যাকআপ রেফারেন্স রাখতে পারে.git/refs/original , যাতে ডিরেক্টরিটিও পরিষ্কার করা যায়।

অবশেষে, এই মন্তব্য এবং এই প্রশ্নে উল্লিখিত হিসাবে ; রিফ্লগ পরিষ্কার করা সাহায্য করতে পারে:

git reflog expire --all --expire=now
git gc --prune=now --aggressive

আরও একটি সম্পূর্ণ এবং সম্ভবত বিপজ্জনক, সমাধান হ'ল গিট সংগ্রহস্থল থেকে অব্যবহৃত জিনিসগুলি সরিয়ে ফেলা


অন্য দৃশ্যকল্প ইন, তাও দেখতে stackoverflow.com/questions/1029969/...
VonC

1
: নিজের জন্য টীকা: রিমোট শাখা ভুলবেন না stackoverflow.com/questions/11255802/...
VonC


1
রিমোট রেফারেন্স ছাড়াও, রিফ্লগ হল এমন একটি জিনিস যা আপনি রেফারেন্সগুলি মুছে ফেলার চেষ্টা করছেন তার কারণ হতে পারে। stackoverflow.com/q/27489761/1072626
vossad01

1
@jww আমি নিশ্চিত করি এটি নিখুঁতভাবে স্থানীয় একটি অপারেশন। এটির দূরবর্তী রেপোর আকারের কোনও প্রভাব নেই। এটি করতে আপনাকে সেই দূরবর্তী রেপোর সার্ভারটিতে সরাসরি অ্যাক্সেসের প্রয়োজন হবে।
ভনসি

94

আপনার জবাবের জন্য ধন্যবাদ। আমি যা করেছি তা এখানে:

git gc
git gc --aggressive
git prune

যে কৌশলটি মনে হয়েছে। আমি প্রায় 10.5MB দিয়ে শুরু করেছি এবং এখন এটি 980KB এর চেয়ে সামান্য বেশি।


8
pruneসর্বদা চালিত হয় gc(2 সপ্তাহ আগে ডিফল্ট সহ)।
Cas

117
আপনি এখন পর্যন্ত ব্যবহার করে ছাঁটাই সহ সমস্ত 3 চালাতে পারবেনgit gc --aggressive --prune=now
rahul286

1
তবে, আমি যখন রেপো মুছব তখন আবার এটি ক্লোন করুন, আকারটি এখনও বড়। আপনি কিভাবে এটি পরিচালনা করবেন?
cwtuan

2

আমার ক্ষেত্রে, আমি বেশ কয়েকটি বড় (> 100 এমবি) ফাইল ঠেকিয়ে দিয়েছি এবং সেগুলি সরাতে এগিয়ে চলেছি। তবে তারা এখনও আমার রেপোর ইতিহাসে ছিল, সুতরাং আমি তাদের এগুলি থেকেও সরিয়ে ফেলতে হয়েছিল।

কৌশলটি কী ছিল:

bfg -b 100M  # To remove all blobs from history, whose size is superior to 100Mb
git reflog expire --expire=now --all
git gc --prune=now --aggressive

তারপরে, আপনাকে আপনার শাখায় বল প্রয়োগ করা দরকার:

git push origin <your_branch_name> --force

বিএফজি হ'ল একটি সরঞ্জাম যা মেশানো ব্যবহার করে লিনাক্স এবং ম্যাকোএসে ইনস্টল করা যেতে পারে:

brew install bfg
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.