গিটের স্থিতিটি সম্পূর্ণ হতে দীর্ঘ সময় নেয়


85

আমি gitএকটি উইন্ডোজ মেশিনে স্থানীয় ডিরেক্টরিতে ফাইলগুলি পরিচালনা করতে ব্যবহার করছি - এখানে কোনও নেটওয়ার্ক জড়িত নয়, আমি অন্য মেশিনে / থেকে চাপছি না বা টানছি না। আমার ডিরেক্টরিতে এটিতে 100 টি ফাইল রয়েছে, সমস্ত পরীক্ষার ফাইলগুলি খুব ছোট। আমি যখন দৌড়ান git status, এটি নিয়মিত 20-30 সেকেন্ড সময় নেয়। এটা কি স্বাভাবিক? এটির গতি বাড়ানোর জন্য আমি কি কিছু করতে পারি, বা আমার সংগ্রহশালার অবস্থা কী রয়েছে তা দেখার আরও ভাল উপায় (পরিবর্তিত ফাইল, লাইনবিহীন ফাইল, ইত্যাদি)? অন্যান্য gitকমান্ডগুলি আরও দ্রুত শেষ হয়েছে বলে মনে হচ্ছে।


আপনি কোন গিট সংস্করণ ব্যবহার করছেন? দয়া করে এমএসজিজিট গুগল গ্রুপ, বা গিট মেলিং তালিকায় (গিট [at] vger.kernel.org, আপনাকে সাবস্ক্রাইব করার দরকার নেই) সাহায্য চাইতে দয়া করে বিবেচনা করুন, সম্ভবত এটি গিটের মধ্যে একটি বাগ।
জাকুব নারেবস্কি

উত্তর:


129

আপনি কি গিট জিসি চেষ্টা করেছেন ? এটি গিট রেপো থেকে ক্রাফ্ট পরিষ্কার করে।


4
এটি কৌশলটি করেছে বলে মনে হচ্ছে। আমি খুব বিস্মিত হয়েছি যদিও কেবল দু'একটি প্রতিশ্রুতি দেওয়ার পরে যে সংগ্রহশালায় এমন অনেক জিনিসপত্র পরিষ্কার করা যায় - ধন্যবাদ!
ম্যাট ম্যাকমিন

4
হেই, আমি সবেমাত্র কমান্ডটি git statusব্যবহার করে timeচালিয়েছি এবং 30.464 এর একটি "আসল" সময় পেয়েছি। আমি তখন আবার দৌড়ে git gcএসে time git status35.409 এর আসল সময় পেয়েছি। খুব অদ্ভুত।
রায়ানস্কটলিউইস

14
এটি আমার বেশিরভাগ সংগ্রহস্থলের জন্য আমাকে 33 সেকেন্ড থেকে 1 সেকেন্ডেরও কম স্থির করেছে। গিট যদি আপনি এই মুহুর্তে উঠতে শুরু করেন তখন এটি করতে বললে ভাল লাগবে। আমি কখনই জানতাম না যে এটি দরকার ছিল।
এক্সপি 84

git statusপরপর একাধিকবার দৌড়ানোর সময়, পরবর্তী রানগুলি প্রথমটির মাত্র এক ভগ্নাংশ নেয়। সুতরাং, আপনি যদি চালাচ্ছেন git status, তারপর git gcএবং git statusআবারও, এটি খুব দ্রুত চালিত হবে বলে আশা করা হচ্ছে।
কিউইক

7

অনুরূপ ইস্যুতে আমি দেখতে পেলাম যে আমার বিদ্যমান গিট রেপোর নীচে একটি ডিরেক্টরিতে গিট রেপো থাকায় একটি বিশাল ধীর গতির কারণ ঘটেছে।

আমি সেকেন্ডারি গিট রেপো অন্য কোথাও সরিয়েছি এবং এখন গতিও দ্রুত!


আমি একই সমস্যা যোগ করুন। হ্যাপেনড কী হয় তা উপ-ডিরেক্টরিতে গিট থ্রি করে। তারপরে সমস্যাটি হ'ল, সাবডির হ'ল এক ধরণের লুকোচুরি (পরিবর্তনগুলি দেখতে আপনাকে ভিতরে গিট স্ট্যাটাসটি করতে হবে) তবে আমার ধারণা গিট এখনও তাদের গণনা করার চেষ্টা করছে। আমি সাবডিরকে উপেক্ষা করি এবং এখন সবকিছু ঠিক আছে।
এমবি 14

6

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


4
হ্যাঁ, নিয়োগকর্তা ট্রেন্ডমিক্রো অফিসস্ক্যানকে আদেশ দিয়েছেন। আমি ভাইরাস স্ক্যানারকে মেরে ফেলেছি, গিট স্ট্যাটাসের সাথে একই ফলাফল।
ম্যাট ম্যাকমিন

4
এই থিমের আর একটি বৈকল্পিক হ'ল অন-ফ্লাই এনক্রিপশন সফটওয়্যার যেমন ক্রেডিট, যা আপনার বক্সকে উল্লেখযোগ্যভাবে ধীর করে তুলতে পারে।
ডন ব্রানসন 21

এটা আমার জন্য সমস্যা ছিল। নিহত ক্যাসপারস্কি অ্যান্টিভাইরাস এবং স্থিতিটি <1 সেকেন্ডে ফিরে এসেছিল।
রবিন উইনস্লো

5

আপনি কি repacking চেষ্টা করেছেন? Git-repack

অন্যথায় ডিরেক্টরিটি সদৃশ করার চেষ্টা করুন এবং সদৃশ ডিরেক্টরিতে .git ফোল্ডারটি মোছার চেষ্টা করুন। তারপরে একটি নতুন গিট ডিরেক্টরি তৈরি করুন এবং দেখুন এটি এখনও ধীর গতির নয়।

যদি এটি এখনও ধীর হয় তবে এটি সিস্টেম বা হার্ডওয়্যার সমস্যার মতো মনে হচ্ছে। গিট আমার জন্য 5 সেকেন্ডেরও কম সময়ে শত শত ফাইলের স্থিতি সমাপ্ত করে।


repack সহায়তা বলে মনে হয়েছিল - এটি চালানোর পরে, আমি স্থিতি দৌড়ে, এবং এটি সঙ্গে সঙ্গে ফিরে আসল। যাইহোক, আমি কয়েক সেকেন্ড অপেক্ষা করে আবার স্থিতি স্থিত করেছিলাম এবং এটি 30 সেকেন্ড সময় নিয়েছিল। আমি ডিরেক্টরিটি সদৃশ করার চেষ্টা করেছি এবং একই সমস্যা পেয়েছি।
ম্যাট ম্যাকমিন

হুম, আকর্ষণীয়। আপনার কি বাহ্যিক ড্রাইভ আছে? নাকি ইউএসবি ফ্ল্যাশ স্টিক? সেখানে রেপো অনুলিপি করে দেখুন এবং কোনও পার্থক্য আছে কিনা তা দেখুন। এটি বর্তমানে চালানো ড্রাইভে কোনও সমস্যা রয়েছে।
thedz

কোনও ইউএসবি ড্রাইভে কোনও পার্থক্য নেই।
ম্যাট ম্যাকমিন

সত্যিই অদ্ভুত। এই মুহুর্তে আমি যা বলতে পারি তা কেবল আমি জানি না। আপনি আপনার রেপো অনুলিপি করে অন্য কারও কম্পিউটারে চেষ্টা করে দেখতে পারেন - এটি কমপক্ষে আপনার সিস্টেমে স্থানীয় সমস্যা আছে কিনা তা আপনাকে জানাতে হবে।
thedz

4

কিছু কারণে git status সংগ্রহস্থল ফোল্ডারটিকে কোনও নতুন স্থানে সরিয়ে নেওয়া বা অনুলিপি করার পরে বিশেষত ধীর গতির।

পরবর্তী ক্ষেত্রে রানগুলি সাধারণত এই ক্ষেত্রে দ্রুত হয়।


4
প্রথম দৌড়ে এই অলসতা এড়ানোর কোনও উপায় আছে কি? আমি গিট গিসির চেষ্টা করেছি, তবে এটি কোনও লাভ হয়নি t এটি কোনও সমস্যা নয় কারণ ফাইলগুলি অনুলিপি করার পরে এটি কেবল প্রথমবারই ঘটে।
ফ্র্যাঙ্কস্যান্ডস

আমি প্রাথমিক ধীরতা এড়ানোর কোনও উপায় সম্পর্কে অবগত নই, তবে এটি করতে পারে এমন কোনও আদেশ থাকলে এটি সম্ভবত প্রাথমিক git statusকমান্ডের মতোই কাজ করে যাচ্ছিল , তাই সম্ভবত একই পরিমাণটি শেষ হতে পারে।
ডানজেব

4

আমার git statusখুব ধীর ছিল (এক মিনিট পর্যন্ত), কারণ বিশ্বব্যাপী .gitignoreফাইলটি আমার উইন্ডো ব্যবহারকারীর প্রোফাইলে ছিল যা একটি অ্যাক্সেস অ্যাক্সেসযোগ্য নেটওয়ার্ক ভাগ করে রাখা হয়েছিল।

git config --global core.excludesfile
এরকম কিছু দেখিয়েছি \\Nxxxx0\User\Username\Eigene Dateien\gitignore_global.txt

কোনও কারণে \\Nxxxx0অ্যাক্সেসযোগ্য ছিল এবং আমার ব্যবহারকারী প্রোফাইলটি ব্যাকআপ সিস্টেম থেকে লোড করা হয়েছিল\\Nxxxxx1 । এটি নির্ধারণ করতে কিছুটা সময় নিয়েছে, কারণ সাধারণত আমার ব্যবহারকারী প্রোফাইলে একটি এন্টারপ্রাইজ স্টার্টআপ স্ক্রিপ্ট দ্বারা ড্রাইভ চিঠিতে আবদ্ধ থাকে এবং সেই ড্রাইভ লেটারটি অ্যাক্সেস করা যথারীতি কাজ করে যাচ্ছিল। আমি নিশ্চিত না যে গিট-কনফিগারেশন কেন নেটওয়ার্ক শেয়ার ব্যবহার করেছে এবং ড্রাইভ চিঠিটি নয় (সম্ভবত আমার চেয়ে কম বয়সী একজনই দোষারোপ করছেন)

সেটিংস পরে
git config --global core.excludesfile $HOME/Eigene\ Dateien/gitignore_global.txt
git statusস্বাভাবিক গতি ফিরে ছিল।


3

দৌড়াদৌড়ি git fsckআমার জন্য অতীতে এই সমস্যাটির সমাধান করেছে।


3

আমার জন্য, অবিচ্ছিন্নতা অনেকগুলি অন্যাক্র্যাকড ফাইল থাকার কারণে ছিল (স্ক্রিপ্টগুলি থেকে অস্থায়ী এবং আউটপুট ফাইলগুলি)) চালনা git status -uno, যা তালাবিহীন ফাইলগুলি বাদ দেয়, খুব দ্রুত দৌড়েছিল এবং আমার প্রয়োজনীয়তা পূরণ করে


1

আমার জন্য সমস্যাটি ছিল যে আমার স্থানীয় হার্ড ড্রাইভটিতে আমার কাছে প্রচুর বিভিন্ন স্টোরের ক্লোন করা ছিল, গিট স্ট্যাটাসের মতো কমান্ড চালানোর জন্য আপনার যত বেশি রেপো থাকবে তত বেশি সময় লাগবে।

আমি কেবল প্রচুর পরিমাণে রেপো মুছে ফেলেছিলাম যা স্থানীয়ভাবে আমার আর প্রয়োজন হয় না এবং আমার গিট স্ট্যাটাসটি 1 মিনিট থেকে 5 সেকেন্ডে চলে গেছে।

আমি এখানে এর মতো কোনও উত্তর দেখতে পাচ্ছি না।


4
আমি মনে করি না এটি কোনওভাবেই git statusআপনি একটি ডিরেক্টরিতে চালিত মানকে প্রভাবিত করতে পারে । যদি আপনার সংগ্রহশালাগুলি বিভিন্ন ডিরেক্টরিতে পরীক্ষা করে দেখানো হয় তবে আপনি কেবল git statusএকবারে এটির জন্য চালাতে পারবেন । আপনার গিটের রেপোগুলি ওভারল্যাপ করে থাকলে এটি অন্যরকম গল্প হতে পারে তবে এটি কোনওভাবেই খারাপ ধারণা।
হুবার্ট গ্রেজস্কোয়িয়াক

@ হুবার্টগ্রাজকোইয়াক এটি অবশ্যই পারবেন। এগুলি আমার জন্য আমার হার্ড ড্রাইভে বিভিন্ন স্থানে ছিল কিন্তু গিটের স্থিতি টাইপ করার সময় এটি আমার লোডের সময়গুলিকে ব্যাপকভাবে প্রভাবিত করে। সদৃশ ভান্ডারগুলি সরিয়ে নেওয়ার পরে এটি তাত্ক্ষণিকভাবে একাধিক মিনিট থেকে 5 সেকেন্ডে দ্রুত হয়ে ওঠে।
জ্যাক পেরি

1

যার অন্য দিকটি git statusউন্নত হবে (গিট 2.14.x / 2.15, Q4 2017 এ) এটি যখন উপেক্ষা করা ফাইলগুলিও দেখায় ( git status --ignored)

" git status --ignored", যখন লক্ষ্য করা যায় যে কোনও ট্র্যাক পাথ ছাড়াই ডিরেক্টরিটি উপেক্ষা করা হয়, তবুও ডিরেক্টরিতে সমস্ত উপেক্ষা করা পথকে অঙ্কিত করা অপ্রয়োজনীয়।
এই ওভারহেড এড়াতে কোডপথটি অনুকূলিত হয়েছে।

দেখুন 5aaa7fd কমিট (18 সেপ্টেম্বর 2017) দ্বারা জেমসন মিলার ( jamill)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট 075bc9c , 29 সেপ্টেম্বর 2017)

এর কর্মক্ষমতা উন্নত করুন git status --ignored

ডিরেক্টরি তালিকা যুক্তির কার্যকারিতা উন্নত করুন যখন এটি শূন্য নয় উপেক্ষা করা ডিরেক্টরিগুলি তালিকা করতে চায়। শূন্যস্থান অবহেলিত ডিরেক্টরিগুলি দেখানোর জন্য, বিদ্যমান যুক্তিটি একটি উপেক্ষা করা ডিরেক্টরিতে থাকা সমস্ত সামগ্রীর মাধ্যমে পুনরাবৃত্তভাবে পুনরাবৃত্তি করবে।
এই পরিবর্তনটি যখন প্রথম ফাইলটি খুঁজে পেয়েছে তখন বিষয়বস্তুগুলির মধ্যে পুনরাবৃত্তি বন্ধ করতে অপ্টিমাইজেশনের পরিচয় দেয়। উপস্থাপিত ডিরেক্টরিগুলিতে বিপুল সংখ্যক ফাইলের সাহায্যে সংগ্রহস্থলগুলিতে 'গিট স্ট্যাটাস --ignored' পারফরম্যান্সে এটির উল্লেখযোগ্য উন্নতি হতে পারে।

400 উপেক্ষিত ডিরেক্টরিতে 196,000 ফাইল সহ একটি উদাহরণ সংগ্রহস্থলের পারফরম্যান্স পার্থক্যের উদাহরণের জন্য:

| Command                    |  Time (s) |
| -------------------------- | --------- |
| git status                 |   1.2     |
| git status --ignored (old) |   3.9     |
| git status --ignored (new) |   1.4     |

আরও উন্নতকরণের জন্য (গিট 2.17, কিউ 2 2018 এ সেট করুন), এই উত্তরটি দেখুন


এখানে সম্পূর্ণরূপে এলোমেলো উদাহরণ: node_modulesএই পার্ফ পরিবর্তন দ্বারা প্রভাবিত হতে পারে। হয়তো ঠিক.
শেঠ ব্যাটিন

1

গিটের পুরানো সংস্করণগুলিতে গিটের স্থিতি সহ একটি কার্য সম্পাদনের সমস্যা রয়েছে - আরও তথ্যের জন্য গিটের স্থিতি কার্যকারিতা উন্নত করার উপায়গুলি দেখুন।

গিট 2.13 এর 1 টি ঠিক আছে এবং আরও 2.17 রয়েছে। আমি ২.7 থেকে ২.২৩ এ স্থানান্তরিত করেছি এবং এটি ধীর স্থিতির সমাধান করেছে। শীঘ্রই 2.24 এর জন্য আরও একটি উন্নতি করার পরিকল্পনা রয়েছে is


0

আমার ক্ষেত্রে, git statusপ্রকল্পের ফাইলগুলির মালিকের থেকে পৃথক ব্যবহারকারী হিসাবে চালানোর কারণে অলসতা দেখা দিয়েছে।

সমস্ত ক্ষেত্রে প্রযোজ্য নয়, chownআপনার বর্তমান ব্যবহারকারীর পক্ষে একটি সহজ কৌশলটি করতে পারে।


-13

আপনার চেকআউটটির একটি নতুন ক্লোন দিয়ে শুরু করার চেষ্টা করুন।

git clone myrepo mynewrepo

এবং তারপরে mynewrepo এ গিট স্থিতি করুন।

বিকল্পভাবে এবং যদি আপনি সাহসী হন তবে আপনার বিদ্যমান চেকআউটটি থেকে আবর্জনা পরিষ্কার করুন।

git clean -dfx

এটি উপেক্ষা করা বা চেক-ইন করা ফাইলগুলির কিছু (সম্ভবত বড়) সেট স্ক্যান করার গিটকে এড়িয়ে চলে।


আমি মনে করি না যে আপনার সমস্ত উপেক্ষা করা ফাইলগুলি (গিট ক্লিন কী করে) মুছে ফেলা সাহায্য করবে, এটি ইতিমধ্যে সেগুলি উপেক্ষা করছে। সম্ভবত গিট ক্লিন চলমান আপনার সমস্ত কনফিগারেশন ফাইল ইত্যাদি মুছে ফেলবে এবং এই আদেশটি পূর্ববর্তীযোগ্য নয়। পুনরায় ক্লোনিং (আপনার প্রয়োজনের ক্ষেত্রে প্রথমে আপনার পুরাতন সংগ্রহস্থল সংরক্ষণ করা) গিট ক্লিন চালানোর চেয়ে অনেক ভাল এবং একই প্রভাব রয়েছে।
এক্সপি 84

4
আমাকে এই উত্তরটির সাথে একমত হতে হবে না, ক্লিন-ডিএফএক্স ক্লিন-ডিফেক্স চালানো জিনিসগুলি ভেঙে দিতে পারে।
মার্সেল ভালদেজ ওরোজকো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.