जैसा कि पहले ही कहा गया है, स्थिति से बाहर निकालने के लिए बस उपयोग करें:
git status -uno # must be "-uno" , not "-u no"
यदि आप इसके बजाय अपनी परियोजना के मूल से, वर्तमान में अनियोजित फ़ाइलों को स्थायी रूप से अनदेखा करना चाहते हैं, तो लॉन्च करें:
git status --porcelain | grep '^??' | cut -c4- >> .gitignore
प्रत्येक बाद की कॉल git status
स्पष्ट रूप से उन फ़ाइलों को अनदेखा करेगी।
अद्यतन : उपरोक्त आदेश में एक छोटी सी खामी है: यदि आपके पास .gitignore
अभी तक कोई फ़ाइल नहीं है तो आपका gitignore खुद को अनदेखा कर देगा! ऐसा इसलिए होता है क्योंकि फ़ाइल निष्पादित .gitignore
होने से पहले बनाई जाती git status --porcelain
है। इसलिए यदि आपके पास कोई .gitignore
फ़ाइल नहीं है, तो मैं इसका उपयोग करने की सलाह देता हूं:
echo "$(git status --porcelain | grep '^??' | cut -c4-)" > .gitignore
यह एक subshell जो पूरा करता है बनाता है से पहले.gitignore
फ़ाइल बनाई गई है।
COMMAND व्याख्या के रूप में मैं वोट का एक बहुत हो रही है (धन्यवाद!) मुझे लगता है कि मैं बेहतर आदेश थोड़ा समझाने चाहते हैं:
git status --porcelain
इसके बजाय इसका उपयोग किया जाता है git status --short
क्योंकि मैनुअल में कहा गया है "स्क्रिप्ट के लिए आउटपुट को एक आसान-से-पार्स फॉर्मेट में दें। यह शॉर्ट आउटपुट के समान है, लेकिन गिट संस्करणों में स्थिर रहेगा और उपयोगकर्ता कॉन्फ़िगरेशन की परवाह किए बिना।" इसलिए हमारे पास पारगम्यता और स्थिरता दोनों हैं;
grep '^??'
केवल उन रेखाओं को फ़िल्टर करता है ??
, जो गिट स्टेटस मैनुअल के अनुसार अनट्रैक की गई फ़ाइलों के अनुरूप होती हैं;
cut -c4-
हर पंक्ति के पहले 3 वर्णों को हटा देता है, जो हमें अनट्रैक फ़ाइल के सापेक्ष पथ देता है;
|
प्रतीक हैं पाइप , जो निम्न आदेश के इनपुट के लिए पिछला आदेश के उत्पादन में पारित;
>>
और >
प्रतीक हैं रीडायरेक्ट ऑपरेटरों , जो एक फ़ाइल या अधिलेखित करने के लिए पिछले आदेश के उत्पादन में संलग्न / क्रमशः एक नई फ़ाइल बनाता है,।
एक और प्रकार जो लोग पसंद करते हैं के लिए का उपयोग करsed
के बजाय grep
और cut
, यहाँ एक और तरीका है:
git status --porcelain | sed -n -e 's/^?? //p' >> .gitignore