जीआईटी स्थिति - क्या केवल एक विशिष्ट निर्देशिका में परिवर्तन दिखाने का एक तरीका है?


136

मैं अंतिम प्रतिबद्ध के बाद से संशोधित फाइलों की एक सूची देखना चाहता हूं, जैसा कि git statusदिखाता है, लेकिन मुझे केवल एक निर्देशिका में स्थित फाइलों की परवाह है। क्या इसे करने का कोई तरीका है? मैंने कोशिश की git status <directory>, लेकिन ऐसा लगता है कि यह पूरी तरह से कुछ अलग करता है (सभी परिवर्तित फ़ाइलों को सूचीबद्ध करता है, जैसे कि वे होंगे जैसे मैंने git add <directory>पहले लिखा था )।

गिट-स्टेटस के लिए प्रलेखन बहुत कुछ नहीं बताता, इस तथ्य के अलावा कि यह उन्हीं विकल्पों को स्वीकार करता है जो गिट-कमिट करता है (लेकिन गिट-कमिट का उद्देश्य बदली हुई फाइलों की सूची दिखाना नहीं है)।

जवाबों:


199

निर्देशिका के भीतर से:

git status .

आप वास्तव में किसी भी पथ का उपयोग कर सकते हैं, इस वाक्यविन्यास का उपयोग कर सकते हैं:

git status <directoryPath>

पथ निर्देशिका के लिए उदाहरण के लिए "मेरे / शांत / पथ / यहाँ"

git status my/cool/path/here

3
धन्यवाद! इसके अलावा, 'git स्टेटस <डायरेक्टरी>' ऐसा लगता है कि मैं क्या उम्मीद करूंगा - मुझे ईमानदारी से याद नहीं है कि मुझे इससे पहले क्या समस्या थी ... शायद यह एक अलग git वर्जन, dunno की बात है।
कुबा सुदर

कोई समस्या नहीं है, और संभवतः - गिट के नए संस्करण चीजों को आसान बनाने के लिए लगते हैं।
सैम डोज

3
हां, व्यवहार निश्चित रूप से 1.6 से 1.7 में बदल गया। यह 1.7 में ओपी आवश्यकता को पूरा करता है लेकिन 1.6 पूरे रेपो पर जारी है।
कोलगुर

31

जो कारण git statusसमान विकल्प लेता है, git commitवह यह है कि git statusयदि आप उसी विकल्प के साथ प्रतिबद्ध हैं जो आपके द्वारा पारित किए जाने के साथ ही होता है git status। इस संबंध git statusमें वास्तव में है git commit --preview

आप जो चाहते हैं उसे पाने के लिए, आप ऐसा कर सकते हैं, जो मंचन में बदलाव दिखाता है:

git diff --stat --cached -- <directory_of_interest>

और यह, जो अस्थिर परिवर्तन दिखाता है:

git diff --stat -- <directory_of_interest>

या यह जो दोनों दिखाता है:

git diff --stat HEAD -- <directory_of_interest>

2
यह आंशिक रूप से काम करता है, हालांकि यह नए बनाए गए (अनट्रैक) फ़ाइलों को नहीं दिखाता है, जैसे गिट-स्टेटस करता है ...
Kuba Suder

ठीक है, मुझे यकीन नहीं था कि आपको क्या रिपोर्ट चाहिए। यदि आपको अस्थिर फ़ाइलों के लिए जांचने की आवश्यकता है git ls-files --others <directory_in_question>या ls-files -o
सीबी बेली

git ls-files -oअस्थिर निर्देशिकाओं में फ़ाइलों को पुनरावर्ती रूप से git statusदिखाता है , जबकि केवल शीर्ष-स्तरीय निर्देशिका दिखाता है। और किसी को सभी कलर कोडिंग इत्यादि की रचना git diff, git ls-filesआउटपुट और रीक्रिएट करना होगा जो git statusप्रदान करता है कि क्या यह एक प्रतिस्थापन है git status। मैं भी वास्तव में इस का एक समाधान देखना चाहते हैं!
पीटर वी। मॉरच

14

सबसे सरल समाधान:

  1. निर्देशिका में जाओ
  2. git status | grep -v '\.\.\/'

बेशक यह रंगों को त्यागता है।


यदि आवश्यक हो, तो आप रंग को वापस करने के लिए कुछ संशोधन जोड़ सकते हैं। उदाहरण 1 उदाहरण 2
कार्सन

2

एक नोट के रूप में, अगर आप git डायरेक्टरी को बिना git डाइरेक्टरी में चेक करने के लिए सरल बनाते हैं;

### फ़ाइल बनाएँ
सुडो नैनो / यूएसआर / स्थानीय / बिन / गिटस्टैट

### इसमें डाल दिया

#! / usr / bin / env बैश

dir = $ 1

अगर [[$ dir == ""]]; फिर
    गूंज "निर्देशिका की आवश्यकता है!"
    बाहर जाएं
फाई

गूंज "'$ dir' के लिए Git स्टेट।"

git --गित- dir = $ dir / .गित --वर्क-ट्री = $ dir diff --stat

### निष्पादन की अनुमति दें
सुडो चामोद + x / usr / स्थानीय / बिन / गिटस्ट

और उस सरल स्क्रिप्ट को कॉल करना gitstat /path/to/foo-project:। आप इसे foo-projectकेवल करते समय भी उपयोग कर सकते हैं gitstat .और इसलिए इससे कम या इसके अलावा git status -s, यदि आपका हमेशा gui के बजाय कंसोल का उपयोग कर रहे हैं।git diff --statgit diff --stat HEAD

क्रेडिट:

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.