2011-09-16 11 views
117

गिट में अविश्वसनीय रूप से उपयोगी आदेशों में से एक है git add -u सब कुछ फेंकने के लिए सूचकांक में अनचाहे फ़ाइलों को फेंकने के लिए। क्या इसका कोई उलटा है? पिछले कुछ महीनों में, मैंने अक्सर खुद को ऐसी स्थिति में पाया है जहां मैंने इंटरैक्टिव रूप से इंडेक्स में कुछ अपडेट जोड़े हैं और मैं प्रतिबद्ध होने से पहले सभी अनचाहे फ़ाइलों को उस इंडेक्स में जोड़ना चाहता हूं।केवल अनचाहे फ़ाइलों को जोड़ना

क्या जोड़ने के लिए कोई तरीका है अनचाहे फ़ाइलों को व्यक्तिगत रूप से पहचानने के बिना इंडेक्स में? मुझे मदद दस्तावेज़ों में कुछ भी स्पष्ट नहीं दिख रहा है, लेकिन शायद मुझे यह याद आ रही है?

धन्यवाद।

+1

"सबकुछ फेंक दें लेकिन इंडेक्स में अनचाहे फ़ाइलों को फेंकने" के संबंध में, ".gitignore' विशेष रूप से उस उद्देश्य के लिए इंजीनियर है, न कि 'git add -u''। – Pacerier

+0

इसके अलावा, क्या आप वर्तमान में ट्रैक किए गए सभी को हटाते समय अनचाहे फ़ाइलों को जोड़ने के लिए कह रहे हैं, या आप वर्तमान में ट्रैक किए गए लोगों के शीर्ष ** पर अनचाहे फ़ाइलों को जोड़ने के लिए कह रहे हैं (सबकुछ ट्रैक कर रहे हैं)? – Pacerier

उत्तर

162

git add -i के साथ यह आसान है। a टाइप करें ("अनचाहे जोड़ें" के लिए), फिर * ("सभी" के लिए), फिर q (छोड़ने के लिए) और आप कर चुके हैं।

एक भी आदेश के साथ ऐसा करने के लिए: echo -e "a\n*\nq\n"|git add -i

+3

मैं उम्मीद कर रहा था कि कुछ कम, अच्छी तरह से, इंटरैक्टिव था, लेकिन यह फ़ाइल द्वारा फाइल से निश्चित रूप से बेहतर है। :-) –

+28

'echo -e" a \ n * \ nq \ n "| git add -i' – Mat

+1

@मैट मैं इस पूर्ण स्वचालन के लिए उपरोक्त टिप्पणी में आया था। धन्यवाद। –

23

git ls-files -o --exclude-standard, ट्रैक न किए गए फ़ाइलों देता है ताकि आप नीचे की तरह कुछ कर सकते हैं (या इसे उपनाम जोड़ना):

git add $(git ls-files -o --exclude-standard) 
+1

एलियास गौ = "गिट एलएस-फाइल -ओ - एक्सक्लूस-स्टैंडर्ड | xargs -i git add '{}'" मेरे लिए काम करता है – Stephan

+0

गिट एलएस-फाइल --help काफी उपयोगी पढ़ा जाता है: '-o, --others' 'आउटपुट' –

8

आप को यह भी जोड़ सकते हैं अपने ~/.gitconfig फ़ाइल:

[alias] 
    add-untracked = !"git status --porcelain | awk '/\\?\\?/{ print $2 }' | xargs git add" 

फिर, कमांडलाइन से, बस चलाने:

012,
git add-untracked 
+0

में अन्य (यानी अनचाहे) फ़ाइलें दिखाएं मुझे यह दृष्टिकोण पसंद है, लेकिन यह फ़ाइल नामों में रिक्त स्थान को संभाल नहीं करता है। –

9

वास्तव में क्या आप के लिए देख नहीं रहे हैं, लेकिन मैं यह काफी उपयोगी पाया गया है:

git add -AN 

सूचकांक करने के लिए सभी फाइलों को जोड़ देगा, लेकिन उनकी सामग्री के बिना। जो फ़ाइलें अनचाहे थीं अब व्यवहार करती हैं जैसे कि उन्हें ट्रैक किया गया था। उनकी सामग्री git diff में प्रदर्शित की जाएगी, और आप git add -p के साथ अंतःक्रियात्मक रूप से जोड़ सकते हैं।

2

git ls-files वर्तमान निर्देशिका में फ़ाइलों को सूचीबद्ध करता है। आप पेड़ में कहीं से भी ट्रैक न किए गए फ़ाइलों की सूची चाहते हैं, यह बेहतर काम कर सकते हैं:

git ls-files -o --exclude-standard $(git rev-parse --show-toplevel) 

पेड़ में सभी ट्रैक न किए गए फ़ाइलों को जोड़ने के लिए:

git ls-files -o --exclude-standard $(git rev-parse --show-toplevel) | xargs git add 
+0

डुनो क्यों काम करना ही एकमात्र चीज थी, लेकिन यह था, धन्यवाद – slackbot39243

-3

सभी ट्रैक न किए गए फ़ाइलों Git आदेश है जोड़ने के लिए

Git जोड़ने -एक

इसके अलावा, आप विभिन्न उपलब्ध विकल्पों के बारे में अधिक जानकारी प्राप्त करना चाहते हैं, आप आदेश

Git पहले आदेश के बजाय जोड़ने मैं

टाइप कर सकते हैं, इस के साथ जोड़ने का विकल्प भी शामिल है और अधिक विकल्प मिल जाएगा नीचे दिखाए गए सभी अनचाहे फाइलें:

$ git add -i चेतावनी: एलएफ को README.txt में सीआरएलएफ द्वारा प्रतिस्थापित किया जाएगा। फ़ाइल की आपकी कार्यशील निर्देशिका में मूल पंक्ति समाप्ति होगी। चेतावनी: एलएफ को पैकेज.जेसन में सीआरएलएफ द्वारा प्रतिस्थापित किया जाएगा।

* आदेश * 1: स्थिति 2: अद्यतन 3: वापस लौटने 4: जोड़ने के ट्रैक न किए गए 5: पैच 6: भिन्नता 7: छोड़ने 8: मदद अब क्या> एक

8

लोग पाइप का सुझाव दिया है git ls-files से git add का आउटपुट लेकिन यह उन मामलों में विफल होने जा रहा है जहां * जैसे सफेद स्थान या ग्लोब वर्ण वाले फ़ाइल नाम हैं।

सुरक्षित तरीके से उपयोग करने होगा:

git ls-files -o --exclude-standard -z | xargs -0 git add 

जहां -z Git बताता \0 लाइन टर्मिनेटर्स उपयोग करने के लिए और -0 बताता है एक ही xargs। इस दृष्टिकोण का एकमात्र नुकसान यह है कि -0 विकल्प गैर-मानक है, इसलिए xargs के कुछ संस्करण केवल इसका समर्थन करते हैं।

0

यदि आपके पास हजारों अनचाहे फ़ाइलें हैं (उह, पूछें नहीं) तो git add -i* जोड़ते समय काम नहीं करेगा। आपको Argument list too long बताते हुए एक त्रुटि मिलेगी।

आप तो भी Windows पर हैं (मत पूछो # 2 :-) और सभी ट्रैक न किए गए फ़ाइलें जोड़ने के लिए PowerShell का उपयोग करने की जरूरत है, तो आप इस आदेश का उपयोग कर सकते हैं:

git ls-files -o --exclude-standard | select | foreach { git add $_ } 
0

मैं इस कोशिश की और यह काम:

git stash && git add . && git stash pop 

git stash केवल अलग ढेर में सभी संशोधित नज़र रखी फाइलों शब्दों में कहें, तो बचे फ़ाइलें हैं जाएगा ट्रैक न किए गए फ़ाइलें। फिर git add . करके सभी फ़ाइलों को अनचाहे फ़ाइलों को आवश्यकतानुसार चरणबद्ध किया जाएगा। आखिरकार, सभी संशोधित फ़ाइलों को git stash pop

संबंधित मुद्दे