क्या गिट रेपॉजिटरी में सभी अनचाहे फ़ाइलों और फ़ोल्डरों को अनदेखा करने का कोई आसान तरीका है?
(मुझे .gitignore
के बारे में पता है।)गिट: सभी मौजूदा अनचाहे फ़ाइलों को अनदेखा कैसे करें?
तो git status
फिर से एक साफ परिणाम प्रदान करेगा।
क्या गिट रेपॉजिटरी में सभी अनचाहे फ़ाइलों और फ़ोल्डरों को अनदेखा करने का कोई आसान तरीका है?
(मुझे .gitignore
के बारे में पता है।)गिट: सभी मौजूदा अनचाहे फ़ाइलों को अनदेखा कैसे करें?
तो git status
फिर से एक साफ परिणाम प्रदान करेगा।
जैसा कि पहले ही कहा गया, में यह मिला स्थिति से बाहर करने के लिए बस का उपयोग करें:
git status -uno # must be "-uno" , not "-u no"
आप के बजाय स्थायी रूप से वर्तमान में ट्रैक न किए गए फ़ाइलों आप कर सकते हैं की अनदेखी करने, से चाहते हैं आपकी परियोजना की जड़, लॉन्च:
git status --porcelain | grep '^??' | cut -c4- >> .gitignore
प्रत्येक आगामी कॉल git status
स्पष्ट रूप से उन फ़ाइलों को अनदेखा कर देगा।
अद्यतन: उपरोक्त आदेश में मामूली कमी है: यदि आपके पास .gitignore
फ़ाइल नहीं है, तो अभी तक आपका गिटिनोरोर स्वयं अनदेखा कर देगा! ऐसा इसलिए होता है क्योंकि फ़ाइल .gitignore
git status --porcelain
निष्पादित होने से पहले बनाई गई है।
echo "$(git status --porcelain | grep '^??' | cut -c4-)" > .gitignore
यह एक subshell जो से पहले .gitignore
फ़ाइल बनाई गई है पूरा करता है बनाता है: तो अगर आप एक .gitignore
फ़ाइल नहीं है फिर भी मैं का उपयोग करें।
COMMAND व्याख्या के रूप में मैं वोट का एक बहुत हो रही है (धन्यवाद!) मुझे लगता है कि मैं बेहतर चाहते आदेश थोड़ा समझाने:
git status --porcelain
git status --short
क्योंकि manual राज्यों के बजाय प्रयोग किया जाता है " स्क्रिप्ट के लिए एक आसान-से-पार्स प्रारूप में आउटपुट दें। यह शॉर्ट आउटपुट के समान है, लेकिन गिट संस्करणों में स्थिर रहेगा और उपयोगकर्ता कॉन्फ़िगरेशन के बावजूद।grep '^??'
फिल्टर केवल लाइनों ??
के साथ शुरू है, जो, git status manual के अनुसार, ट्रैक न किए गए फ़ाइलों के अनुरूप;cut -c4-
हर पंक्ति है, जो देता है के पहले 3 अक्षरों को हटा "तो हम दोनों parseability और स्थिरता है हमें सिर्फ ट्रैक न किए गए फ़ाइल के सापेक्ष पथ;>>
और >
प्रतीकों redirect operators कर रहे हैं, जो उत्पादन संलग्न;|
प्रतीकों pipes है, जो निम्न आदेश के इनपुट के लिए पिछला आदेश के उत्पादन में पारित कर रहे हैं पीआर के एक फ़ाइल के लिए evious कमांड या overwrites/क्रमशः एक नई फ़ाइल बनाता है।जो लोग grep
और cut
के बजाय using sed
पसंद करते हैं के लिए एक और प्रकार, यहाँ एक और तरीका है:
git status --porcelain | sed -n -e 's/^?? //p' >> .gitignore
क्या मैं अपनी एफ # $% वोट सीमा तक नहीं पहुंच पाया था, मैं निश्चित रूप से ++ यह चाहता हूं। – sjas
'cut -c4-' ** प्रत्येक पंक्ति के पहले 4 वर्ण हटा देता है, जो हमें अनचाहे फ़ाइल के सापेक्ष पथ देता है; ** नहीं। -c' कॉल करने के लिए स्तंभ संख्याओं की सूची की शुरुआत को चिह्नित करता है। और '4-'* * कॉलम 4 से अंत तक लाइन का चयन करता है, जो स्तंभ 1-3 में कटौती करता है। तो आपका कट कमांड वास्तव में प्रत्येक पंक्ति के पहले 3 अक्षर हटा देता है। यदि आपने गिट स्टेटस लाइन से 4 वर्ण हटा दिए हैं जैसे कि इस फ़ाइल के लिए यहां एक: '?? ऐप/विचार/static_pages/contact.html.erb', आप 'ऐप' के पहले अक्षर को हटा देंगे। तो आदेश सही है, लेकिन स्पष्टीकरण दोषपूर्ण है। – 7stud
@ 7 स्टड: धन्यवाद, आप सही हैं, मैंने गलती से 4 लिखा है। मैंने जवाब तय कर लिया है। – Diego
दो तरीके:
तर्क "-uno" Git-स्थिति के लिए इस्तेमाल करते हैं। यहाँ एक उदाहरण है:
[[email protected]_vmware:ft]$ git status
# On branch ft
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# foo
nothing added to commit but untracked files present (use "git add" to track)
[[email protected]_vmware:ft]$ git status -uno
# On branch ft
nothing to commit (working directory clean)
या आप .gitignore करने के लिए फ़ाइलों और directires जोड़ सकते हैं, जो मामले में वे ऊपर कभी नहीं दिखाई देगा।
'gitignore' को 'गिट स्थिति' संपादित करने का एक आसान तरीका | बिल्ली >> temp && vim temp'। फिर फ़ाइल को संपादित करना ताकि पहले कुछ पंक्तियां और आखिरी पंक्ति हटा दी जा सके, साथ ही इसके पीछे '# 'और व्हाइटस्पेस पीछे हो। फिर 'बिल्ली temp >> .gitignore और आरएम temp'। यदि कोई 'gitignore' पहले मौजूद नहीं था, तो' mv temp .gitignore' करेगा। बदसूरत सामान लेकिन '.gitignore' मैन्युअल रूप से अद्यतन करने से बेहतर है। – sjas
यह उत्तर गलत है। सही जवाब '-uno' है। यदि आप '-u no' का उपयोग करते हैं, तो यह 'no -u' के बराबर है - यह' नो' 'नामक फ़ाइल पर एक स्थिति करेगा (जो शायद मौजूद नहीं है) और डिफ़ॉल्ट' -u' मोड का उपयोग करें। अर्थात।यह 'गिट स्थिति संख्या 0 के बराबर है –
git status -uno
ठीक है अगर पोस्ट करने से पहले सभी आरटीएफएम करेंगे, तो हम में से कोई भी कभी भी कोई प्रतिनिधि नहीं मिलेगा :-) –
लेकिन यह पोस्ट प्रश्न का उत्तर नहीं देती है। आरटीक्यू अधिक उपयुक्त लगता है। –
@ श्रीधर-सरनोबत मेरा उत्तर मेरे प्रश्न का उत्तर देता है, इसलिए मुझे समझ में नहीं आता कि आप क्या बताने की कोशिश करते हैं? – sjas
आप ट्रैक न किए गए फ़ाइलों का एक बहुत कुछ है, तो और नहीं करना चाहते करने के लिए " gitignore
"उनमें से सभी, ध्यान दें कि, git 1.8.3 (April, 22d 2013), git status
--untracked-files=no
का उल्लेख करेगा भले ही आपने उस विकल्प को पहले स्थान में नहीं जोड़ा हो!
"
git status
" उपयोगकर्ताओं को--untracked=no
विकल्प का उपयोग करने में बहुत समय लगता है जब यह बहुत लंबा लगता है।
-u no
या तो अस्थिर फ़ाइलों को नहीं दिखाता है। -uno
वांछित के रूप में काम करता है और अस्थिर दिखाता है, लेकिन अनचाहे छुपाता है।
यहां तक कि यह काफी सही नहीं है। 'गिट स्थिति -यू एक्स'' गिट स्थिति X -u' के बराबर है ('एक्स' '-यू' के लिए तर्क नहीं है)। यह बदले में, 'गिट स्थिति X' के बराबर है (क्योंकि तर्क के बिना '-u' डिफ़ॉल्ट '-u' है)। इसलिए, यह फ़ाइल 'एक्स' पर बस एक गिट-स्टेटस है। इसलिए, यदि 'एक्स'' नहीं 'है तो यह' नो 'नामक फ़ाइल पर गिट स्टेटस करने की कोशिश करता है, जो आपके पास –
आप स्थायी रूप से इन फ़ाइलों को अनदेखा करना चाहते हैं, तो उन्हें .gitignore
में जोड़ने के लिए एक आसान तरीका `-uno` झंडा
git ls-files --others --exclude-standard >> .gitignore
नहीं है, इसलिए इसे कई वोट क्यों नहीं मिलते हैं? 2 अन्य कार्यक्रमों के माध्यम से पाइप करने की कोई ज़रूरत नहीं है! – JoelFan
@ जोएलफ़ान: दो कारण: 1) ** यह केवल गिट की जड़ से काम करता है **, जबकि स्वीकार्य एक प्रत्येक उपनिर्देशिका से काम करता है, आपको केवल गंतव्य '.gitignore' पथ 2) को ट्विक करने की आवश्यकता है। आपके पास एक अनचाहे निर्देशिका है, ** यह प्रत्येक में प्रत्येक फ़ाइल को सूचीबद्ध करता है, लेकिन अनचाहे निर्देशिका नहीं ** (इसलिए आप निर्देशिका को अनदेखा नहीं करेंगे, और इस प्रकार निर्देशिका में भविष्य में फ़ाइलों को अनचाहे के रूप में रिपोर्ट किया जाएगा, जबकि स्वीकृत एक केवल निर्देशिका को सूचीबद्ध करता है, न कि अनचाहे फाइलों के अंदर। यह एक बात है कि आप क्या करना चाहते हैं, लेकिन अक्सर आप पूरे डीआईआर – Diego
को अनदेखा करना चाहते हैं धन्यवाद पूली मैं आपके सुझाव * के अंतर की सराहना करता हूं * क्योंकि * @ डिएगो द्वारा उल्लिखित बिंदुओं में से मैंने फ़ाइलों और फ़ोल्डर्स की लाइब्रेरी के साथ काम करना शुरू कर दिया है और मैं मूल फ़ाइलों को ट्रैक/पुश नहीं करना चाहता हूं। मैं केवल उन फाइलों को ट्रैक करना चाहता हूं जिन्हें मैं पुस्तकालय में जोड़ता हूं या पुनर्निर्माण करता हूं। देहात किराया फ़ोल्डर्स सब कुछ अनदेखा करेंगे। इस/आपके समाधान ने स्नैप में सभी 16 9 6 फाइलों को जोड़ा। xD – Chaos7703
उपयोग है। – nhahtdh
संभावित डुप्लिकेट [क्या गिट को अनचाहे फ़ाइलों को न दिखाने का कोई तरीका है?] (Http://stackoverflow.com/questions/2774416/is-there-a-way-to-get-git-not-to -शो-द-अनट्रैक-फाइलें) – random
या आप अपनी .gitignore फ़ाइल में एक * जोड़ना चाह सकते हैं। :) – vilicvane