जैसा कि " git: में उल्लेख किया गया है कि मैं एक निर्देशिका सबट्री में सभी फ़ाइलों को पुनरावर्ती कैसे जोड़ूं जो एक ग्लोब पैटर्न से मेल खाती हैं? ", यदि आप ठीक से बचते हैं या अपने pathspec ग्लोबिंग (जैसे '*.java'
) को उद्धृत करते हैं , तो हाँ, जोड़ दें'*.java'
Git 2.13 (Q2 2017) में सुधार होता है जो इंटरैक्टिव ऐड के लिए है:
जेफ किंग ( ) द्वारा 7288e12 (14 मार्च 2017) प्रतिबद्ध देखें । (द्वारा विलय Junio सी Hamano - - में प्रतिबद्ध 153e0d7 , 17 मार्च 2017)peff
gitster
add --interactive
: के साथ pathspecs का विस्तार न करें ls-files
जब हम संशोधित फ़ाइलों की सूची प्राप्त करना चाहते हैं, तो हम पहले किसी भी उपयोगकर्ता द्वारा प्रदान किए गए pathspecs को " ls-files
" के साथ विस्तारित करते हैं , और फिर परिणामी सूची को तर्क " diff-index
" और " diff-files
" के रूप में फीड करते हैं ।
यदि आपका पाथसेक बड़ी संख्या में पथों में विस्तारित होता है, तो आप दो समस्याओं में से एक में भाग ले सकते हैं:
ओएस तर्क सूची के आकार के बारे में शिकायत कर सकता है, और चलाने से इनकार कर सकता है। उदाहरण के लिए:
$ (ulimit -s 128 && git add -p drivers)
Can't exec "git": Argument list too long at .../git-add--interactive line 177.
Died at .../git-add--interactive line 177.
यह linux.git
रिपॉजिटरी पर है, जिसमें "ड्राइवरों" निर्देशिका में लगभग 20K फाइलें हैं (उनमें से कोई भी इस मामले में संशोधित नहीं हुआ है)। ulimit -s
ऐसे विशाल रास्तों के लिए भी लिनक्स पर समस्या दिखाने के लिए " " ट्रिक आवश्यक है।
अन्य ऑपरेटिंग सिस्टमों की सीमाएँ बहुत कम होती हैं (उदाहरण के लिए, OS X पर केवल 5K फ़ाइलों के साथ एक वास्तविक दुनिया का मामला देखा गया था)।
यहां तक कि जब यह काम करता है, तो यह वास्तव में धीमा है। Pathspec कोड भारी संख्या में पथों के लिए अनुकूलित नहीं है। यहाँ ulimit के बिना एक ही मामला है:
$ time git add -p drivers
No changes.
real 0m16.559s
user 0m53.140s
sys 0m0.220s
हम इसे ls-files
पूरी तरह से स्किप करके " " सुधार कर सकते हैं , और मूल पाथसेक को अलग-अलग कमांड में खिला सकते हैं।
ऐतिहासिक रूप से " diff-index
" द्वारा समर्थित पैथस्पेक भाषा कमजोर थी, लेकिन अब ऐसा नहीं है।