গিট ফোল্ডারের আকার কমানোর কোনও উপায় আছে?


156

মনে হচ্ছে আমার প্রকল্পটি প্রতিটি গিটের সাথে আরও বড়ো হচ্ছে commit/push। আমার গিট ফোল্ডারটি পরিষ্কার করার কোনও উপায় আছে?

উত্তর:


214

আমি নিশ্চিত আপনি কি চান না। প্রথমত, অবশ্যই প্রতিবার আপনি প্রতিশ্রুতিবদ্ধ / চাপ দেওয়ার সময় ডিরেক্টরিটি আরও বড় হতে চলেছে, যেহেতু এটি অতিরিক্ত প্রতিটি কমিটের প্রতিটি সংরক্ষণ করতে হয়।

তবে সম্ভবত আপনি চান git gcযা "অপ্রয়োজনীয় ফাইলগুলি সাফ করবে এবং স্থানীয় সংগ্রহস্থলটি অনুকূল করবে" ( ম্যানুয়াল পৃষ্ঠা )।

আরেকটি সম্ভবত প্রাসঙ্গিক কমান্ড হ'ল git cleanযা আপনার গাছ ( ম্যানুয়াল পৃষ্ঠা ) থেকে অচিহ্নযুক্ত ফাইলগুলি মুছে ফেলবে ।


30
গিট ক্লিন- d -f -x .gitignore এবং এই জাতীয় তালিকাভুক্ত ফাইল মুছে দেয়। উদাহরণস্বরূপ কর্মক্ষেত্র যা গিট, পডস ফোল্ডার ইত্যাদিতে নেই
কালে

102
WARNINGকমান্ড হিসাবে @Kalle করে উপরের লিখিত সরাবে প্রত্যেক > UNTRACKED <ফাইল ও ডিরেক্টরির আপনার Git রুট সার্ভারের মধ্যে , না শুধু ".gitignore তালিকাভুক্ত ফাইল"। গীত দ্বারা ট্র্যাক করা হচ্ছে না এমন কিছু, এটি তালিকাবদ্ধ রয়েছে কিনা তা নির্বিশেষে .gitignoreমুছে ফেলা হবে। git clean -dfX(কেসটি নোট করুন X) কেবলমাত্র এমন আইটেমগুলি সরিয়ে ফেলবে যাগুলির ক্ষেত্রে প্রযোজ্য নিয়ম রয়েছে .gitignoreদয়া করে এই সতর্কবার্তা মনোযোগ দেয়: কখনও চালানো git cleanহয় এটিকে ইন্টারেক্টিভ মোডে চালানো, সঙ্গে ছাড়া -iপরিবর্তে -f, অথবা অন্তত প্রথম একটি শুষ্ক রান করছেন - -nসঙ্গে এবং তারপর আবার -f
অ্যাড্রিয়ান গন্টার

5
বা একটি ব্যাকআপ তৈরি করছে :-)
মতেেন উলহাক

61

চালান:

git remote prune origin

সমস্ত বাসি ট্র্যাকিং শাখাগুলি মুছে ফেলে যা ইতিমধ্যে সরানো হয়েছে originতবে এখনও স্থানীয়ভাবে উপলব্ধ remotes/origin

git gc --auto

' জি আরবেজ সি ওলিকেশন' - গৃহকর্মের কাজ পরিচালনা করে (সংশোধনগুলি সংকুচিত করে, আলগা / অ্যাক্সেসযোগ্য অবজেক্টগুলিকে সরিয়ে দেয়)। --autoপতাকা প্রথম নির্ধারণ করে কোন কাজ প্রয়োজন বোধ করা হয় কিনা, এবং যদি না কিছু কাজ ছাড়া প্রস্থান করে।


4
তাদের কি কিছু ব্যাখ্যা? আমি জানি যে আমরা সেগুলি গুগল করতে পারি এবং তাদের ডকুমেন্টেশনগুলি অনুসন্ধান করতে পারি, তবে যখন আপনার উত্তরটির সংক্ষিপ্ত বিবরণ দেওয়া হয় যখন এটিতে কেবল কোড বা আদেশ থাকে।
ডিজনেয়েট

28

আপনার গিট রেপো প্রতিটি প্রতিশ্রুতিবদ্ধতার সাথে মারাত্মকভাবে আরও বড় হয়ে উঠবে এমন একটি দৃশ্য হ'ল আপনি নিয়মিতভাবে বাইনারি ফাইল তৈরি করছেন you তাদের স্টোরেজ পাঠ্য ফাইলের চেয়ে দক্ষ হবে না

আরেকটি যেখানে আপনি মধ্যে ফাইল একটি বিশাল সংখ্যা আছে এক এক রেপো (যা একটি হল Git সীমা বিভিন্ন subrepos পরিবর্তে () submodules যেমন পরিচালিত )।

গিট স্পেস সম্পর্কিত এই নিবন্ধে , অ্যালব্লিউ উল্লেখ করেছেন:

নোট করুন যে গিট (এবং এইচজি এবং অন্যান্য ডিভিসিএস) কোনও সমস্যায় ভুগছে যেখানে (বৃহত্তর) বাইনারিগুলি চেক ইন করা হয়, তারপরে মুছে ফেলা হয়, কারণ তারা এখনও সংগ্রহস্থলটিতে প্রদর্শিত হবে এবং স্থান গ্রহণ করবে, এমনকি যদি তারা বর্তমান না হয় if ।

আপনার গিট রেপোতে আপনার যদি বড় বাইনারি থাকে তবে আপনি বিবেচনা করতে পারেন:

আমি যেমন " গিটে ফাইলের সীমাটি (সংখ্যা এবং আকার) কী আছে? " তে উল্লেখ করেছি, আরও সাম্প্রতিক (2015, এই উত্তরের 5 বছর পরে) গিটিহাব থেকে গিট এলএফএস files বড় ফাইলগুলি পরিচালনা করার একটি উপায় (এগুলি বাইরে সংরক্ষণ করে ) গিট সংগ্রহস্থল)।


1
আপনার যদি বড় বাইনারি ফাইল (চিত্রগুলির মতো) নিয়মিত যুক্ত / আপডেট করা থাকে তবে গিট লার্জ ফাইল সমর্থন সহায়ক। Git-lfs.github.com দেখুন । প্রয়োগ করা খুব সহজ, গিথুব দ্বারা সমর্থিত। এটি সমস্ত সহযোগীভাবে ব্যবহার করার জন্য সমস্ত দলের সদস্যদের এটি ইনস্টল করা দরকার।
এরিক উডস

@ এরিকউডস সত্য আমি গিট-এলএফএসের আগে উল্লেখ করেছি ( times৪ বার: stackoverflow.com/search?tab=newest&q=user%3a6309%20git-lfs )। আমি সেই অনুযায়ী পুরানো উত্তরটি সম্পাদনা করেছি।
ভোনসি

হা, সত্যিই! মজার বিষয় কীভাবে 9+ বছরের পুরানো উত্তর এখনও প্রাসঙ্গিক (এবং এলএফএসের তথ্যের সাথে এখন আরও বেশি)।
এরিক উডস

22

হ্যাঁ হ্যাঁ, git gcসমাধানটি কি স্বাভাবিকভাবেই হয়?

এবং স্থানীয়ভাবে - আপনি কেবল স্থানীয় ভাণ্ডার মুছতে পারেন এবং এটি আবার ক্লোন করতে পারেন,

তবে এখানে আরও গুরুত্বপূর্ণ কিছু আছে ...

প্রক্রিয়াটির জন্য আপনি যে সেকেন্ডের জন্য অপেক্ষা করেন সেগুলি দীর্ঘ মুহুর্তে সংগ্রহ করা হয় যা কয়েক ঘন্টা ব্যয় করা সময় ব্যয় করা হয়,

একমাত্র সাম্প্রতিক সংস্করণের ফাইলগুলি স্ক্র্যাচ থেকে নতুন (সম্পূর্ণরূপে, কেবল একটি শাখা নয়) সংগ্রহস্থল তৈরি করুন , স্বাভাবিকভাবেই আপনি সমস্ত ইতিহাস সরিয়ে ফেলবেন,

কিন্তু কোড-ওয়ার্ল্ডে যখন সংবেদনশীল হওয়ার সময় হয় না, প্রতিটি প্রতিশ্রুতিবদ্ধ বা পৃথক কোডের পুরো 5 বছর ধরে টেনে তোলার কোনও বিন্দু নেই, আপনি এখনও পুরানো গিটটি এবং বাহ্যিক কোথাও কোথাও সংরক্ষণ করতে পারেন, যদি আপনি নস্টালজিক পান তবে:]

তবে, এক পর্যায়ে আপনাকে সত্যিই এগিয়ে যেতে হবে:]

আপনার দল আপনাকে ধন্যবাদ জানাতে হবে!


12
সম্পূর্ণরূপে একমত, আমরা সম্প্রতি একটি পুরাতন সংগ্রহস্থলের সাহায্যে এই পদ্ধতিটি গ্রহণ করেছি এবং পিছনে ফিরে তাকাতে পারি নি; ঠিক আছে, মূলত কারণ আমরা পারিনি, তবে আপনি জানেন যা আমি বলতে চাই :)
হোয়াটসইডিং

13

এই কমান্ডটি চালানো অত্যন্ত বিপজ্জনক, তবে আপনার সমস্ত গিট পুনরুদ্ধার / ব্যাকআপ ফাইল মুছে ফেলে আপনার সংগ্রহস্থল সঙ্কুচিত করবে:

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

এটি কিছু খারাপ কমান্ড থেকে আপনার সংগ্রহস্থল পুনরুদ্ধার করতে গিটের সমস্ত ফাইল মুছে ফেলবে, উদাহরণস্বরূপ, যদি আপনি এটি করেন তবে আপনি git reset --hardসাধারণত হারিয়ে যাওয়া ফাইলগুলি পুনরুদ্ধার করতে পারেন। আপনি যদি কমান্ডের git reset --hardআগে করেন git reflog expire...তবে আপনি সমস্ত কিছু হারিয়ে ফেলেছেন। এখন, আপনার একমাত্র আশা এমন কিছু সরঞ্জাম ব্যবহার করা যা আপনার ফাইল সিস্টেমটিকে বিশ্লেষণ করে এবং মুছে ফেলা ফাইলগুলি পুনরুদ্ধার করার চেষ্টা করবে, যদি সেগুলি ওভাররাইড না করা হয়।


3
আমি সত্যিই এটিকে অত্যন্ত বিপজ্জনক বলব না । আমি এটিকে কেবল এমন কিছু লেবেল করব যা আপনার যত্নবান হতে হবে । আমার অভিজ্ঞতায় খুব কম লোকই রিফ্লগ বা নাগম্য বস্তুগুলিকে স্পর্শ করে — বেশিরভাগ এমনকি তারা জানত না যে তারা সেখানে আছেন বা কীভাবে তাদের সাথে ইন্টারঅ্যাক্ট করবেন, এবং তাই তারা কার্যকর হবে এমন পরিস্থিতিতে আটকে যান বা ভয়ঙ্করভাবে জিনিসগুলি করেন things অদক্ষ উপায় আমি এতদূর যেতে পেরেছি যে আপনি যদি জানেন না এবং এই আদেশগুলি কী করবে তা অনুধাবন করতে না পারলে আপনি সেগুলি নিরাপদে চালাতে পারবেন!
ক্রিস মরগান

10

git clean -d -f -i এটি করার সেরা উপায়।

এটি আরও নিয়ন্ত্রিত উপায়ে পরিষ্কার করতে সহায়তা করবে।

-i ইন্টারেক্টিভ মানে।


3
যদিও ওপির প্রশ্নটি অস্পষ্ট, এবং এটি সেই ক্ষেত্রে একটি ভাল উত্তর, আমি এটি উল্লেখ করতে চাই git cleanনা যে ডিরেক্টরিটি পরিষ্কার করার মতো রেপো পরিষ্কার করার জন্য নয়। অন্ধভাবে অনুলিপি / অনুলিপি করা ব্যবহারকারীদের জন্য সাবধান; এটি আপনার স্থানীয়ভাবে চাইলে হয়ত তালিকাহীন ফাইল / ডায়ারগুলি সরিয়ে দেয়।
sraboy

গিট ক্লিন-ডি-এক্স -f আপনি যদি গভীর পরিষ্কার করতে চান তবে দুর্দান্তভাবে কাজ করে
isষভ জৈন

2

এটি সঙ্কুচিত হবে কিনা জানেন না, তবে আমি চালানোর পরে git clean, আমি প্রায়শই এটিও করি git repack -adযা প্যাক ফাইলগুলির সংখ্যা হ্রাস করে।


5
repack git gcপ্রক্রিয়া একটি অংশ , সুতরাং এটি আলাদাভাবে চালানোর প্রয়োজন নেই
artkoshelev
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.