2010-07-01 12 views
36

में गिट गिनती फ़ाइलें मैं यह पता लगाने की कोशिश कर रहा हूं कि मेरी असामान्य अनुक्रमणिका में फ़ाइलों को आसानी से कैसे गिनना है।चरणबद्ध सूचकांक

मैं कोशिश की है:

git status | grep '#' | wc -l 

लेकिन वहाँ कुछ पंक्तियां कि # बदल फ़ाइलों का प्रतिनिधित्व नहीं करते के साथ शुरू कर रहे हैं। किसी को भी कुछ बेहतर मिला है? ऐसा करने के लिए git status के लिए एक झंडा होना चाहिए।

यहां तक ​​कि GitX जैसे टूल आपको आसानी से चरणबद्ध फ़ाइलों/निर्देशिकाओं का चयन करने की अनुमति नहीं देते हैं और देखें कि उनमें से कितने हैं।

उत्तर

43

आप कुछ चाहते हैं एक स्क्रिप्ट का उपयोग कर सकते हैं:

git diff --cached --numstat | wc -l

यदि आप चाहते हैं कुछ मानव पठनीय:

git diff --cached --stat

+0

क्यों - कैश किए गए ध्वज? –

+3

@ हम्डिंगर प्रश्न इंडेक्स में असामान्य फाइलों के बारे में था, जो '- कैश किए गए' शो है। '--cached' के बिना, यह उन फ़ाइलों को दिखाएगा जो कामकाजी निर्देशिका में बदले गए हैं लेकिन इंडेक्स नहीं (यानी अस्थिर फ़ाइलें)। – mkarasek

5

कोशिश Git स्थिति -s:

git status -s | egrep "^M" | wc -l 

एम सीधे लाइन की शुरुआत के बाद (^) द्वारा चरणबद्ध फ़ाइल इंगित करता है। "^ एम" एक अस्थिर लेकिन बदली गई फाइल होगी।

+0

धन्यवाद, कि 0 लेकिन उसके परिणाम 'Git स्थिति -s | egrep "^ एम" | wc -l' काम किया। मुझे लगता है कि अंतरिक्ष को रेगेक्स में "एम" के दूसरी तरफ होना चाहिए। – Bradley

+0

आह और अन्य प्रकार के परिवर्तनों को शामिल करने के लिए (जोड़ा गया, नामित, बनाया गया, हटाया गया): 'गिट स्थिति -s | egrep -c "^ [एमएआरसीडी]" ' – Bradley

+0

मुझे समझ में नहीं आता कि इस जवाब में इतने कम वोट क्यों हैं। यह सभी संभव राज्यों की रिपोर्ट करने के लिए सबसे आसानी से अनुकूलनीय है। – Michael

13

यह मेरे लिए काम किया:

git status | grep 'modified:' | wc -l

यह एक नंबर

+1

और वह संख्या "1" – Guillochon

+0

है यह नई जोड़े गए फ़ाइलों के साथ काम नहीं करती है। – pepero

2

रिटर्न क्या इसके लायक है के लिए, मैं पसंद करते हैं:

git diff --stat | tail -n1 

आउटपुट कुछ की तरह:

10 files changed, 74 insertions(+), 123 deletions(-) 
संबंधित मुद्दे