जब मैं अपनी रिपॉजिटरी के सबफ़ोल्डर में git स्टेटस करता हूँ तो इसमें पेरेंट फोल्डर की स्थिति भी शामिल होती है।
वहाँ सिर्फ एक विशेष फ़ोल्डर के लिए गिट की स्थिति विवश करने के लिए एक रास्ता है?
जब मैं अपनी रिपॉजिटरी के सबफ़ोल्डर में git स्टेटस करता हूँ तो इसमें पेरेंट फोल्डर की स्थिति भी शामिल होती है।
वहाँ सिर्फ एक विशेष फ़ोल्डर के लिए गिट की स्थिति विवश करने के लिए एक रास्ता है?
जवाबों:
git status .
वर्तमान निर्देशिका और उपनिर्देशिकाओं की स्थिति दिखाएगा।
उदाहरण के लिए, इस पेड़ में दी गई फाइलें (संख्याएँ):
a/1
a/2
b/3
b/4
b/c/5
b/c/6
उपनिर्देशिका "बी" से, git statusपूरे पेड़ में नई फाइलें दिखाता है:
% git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: ../a/1
# new file: ../a/2
# new file: 3
# new file: 4
# new file: c/5
# new file: c/6
#
लेकिन git status .सिर्फ "बी" और नीचे की फाइलों को दिखाता है।
% git status .
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: 3
# new file: 4
# new file: c/5
# new file: c/6
#
git status ."b" के नीचे सभी फ़ाइलों को पुनरावर्ती दिखाता है। "बी" में केवल फाइलें दिखाने के लिए, लेकिन नीचे नहीं, आपको बस फाइलों की एक सूची (और निर्देशिका नहीं) पास करने की आवश्यकता है git status। यह आपके शेल पर निर्भर करता है, थोड़ा सा है।
Zsh में आप "ग्लोब क्वालिफायर" के साथ साधारण फ़ाइलों का चयन कर सकते हैं (.)। उदाहरण के लिए:
% git status *(.)
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: 3
new file: 4
बैश के पास ग्लोब क्वालिफायर नहीं है, लेकिन आप findसाधारण फ़ाइलों का चयन करने के लिए GNU का उपयोग कर सकते हैं और फिर उन्हें git statusपसंद करने के लिए पास कर सकते हैं :
bash-3.2$ find . -type f -maxdepth 1 -exec git status {} +
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: 3
new file: 4
यह उपयोग करता है -maxdepthजो एक GNU खोज एक्सटेंशन है। POSIX पता नहीं है -maxdepth, लेकिन आप यह कर सकते हैं:
bash-3.2$ find . -path '*/*' -prune -type f -exec git status {} +
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: 3
new file: 4
.इसके उप फ़ोल्डर को संदर्भित करता है, लेकिन नहीं। उसके लिए कोई काम? धन्यवाद!
git status *(.)। बैश के पास केवल फाइलों को ग्लोब करने का शॉर्टहैंड तरीका नहीं है, लेकिन आप एक विस्तारित findउदाहरण का उपयोग कर सकते हैं find . -type f -maxdepth 1 -exec git status {} +। ऐसा लगता है कि आप हर समय टाइप करने के बजाय किसी अन्य चीज़ या स्क्रिप्ट में रखना चाहते हैं।
कुछ प्लंबिंग कमांड पैरामीटर के रूप में एक डायरेक्टरी लेते हैं:
git ls-files -t -o -m aDirectory
आपको सभी फ़ाइलें बदल देगा लेकिन अपडेट नहीं किया गया (चरण में नहीं जोड़ा गया), या अनट्रैक नहीं किया गया। और वह एक निर्देशिका के लिए।
जैसा कि इस सूत्र में लिखा गया है , git ls-files एक ' --addedविकल्प ' का समर्थन नहीं करता है।
अधिक मौलिक कारण है क्योंकि
ls-filesप्लंबिंग इंडेक्स के बारे में है ।
जोड़ा सूचकांक और काम के पेड़ के बीच तुलना के बारे में नहीं है ।
यह HEAD कमिट और इंडेक्स के बीच है, और यह ls- फाइल प्लंबिंग से संबंधित नहीं है।
इसलिए, यहां बताई गई कमांड्स का उपयोग करें :
git diff-index --name-only -B -R -M -C HEAD src
आप दोनों गैर-जोड़ा और जोड़ा फ़ाइलों देना होगा
git diff-files --name-only -B -R -M -C src
आपको केवल गैर-जोड़ी गई फ़ाइलें देगा। (पुनर्लेखन, नाम, प्रतियाँ, का पता लगाते समय ...)
नलसाजी कमांड के साथ हमेशा की तरह, कुछ स्क्रिप्टिंग क्रम में है;)
अपूर्ण, लेकिन यह उस निर्देशिका के भीतर से भी काम करता है जिसमें आप रुचि रखते हैं:
git status | grep -v ' \.\./'
यह उन सभी निर्देशिकाओं को छिपाएगा जिनके लिए उनके सापेक्ष पथ में एक ऊपर की ओर संदर्भ की आवश्यकता होगी।
यदि आप दूसरे छोर से रंग थूकना चाहते हैं, तो निम्न पर सेट color.statusकरें always:
git config color.status always
git statusजादू शब्द का उपयोग करके एक pathspec देकर वर्तमान निर्देशिका (बच्चे फ़ोल्डर के बिना) तक सीमित करना संभव है : globऔर*:
git status ':(glob)*'
जब मैंने कोशिश की, मुझे ऐसा करने का कोई तरीका नहीं मिला।
मैंने समाप्त कर दिया:
x@x:~/x$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# b
# main/a
nothing added to commit but untracked files present (use "git add" to track)
x@x:~/x$ git status | grep main
# main/a