कमांड लाइन git का उपयोग करते हुए, मैं git को उन फ़ाइलों की सूची कैसे दिखा सकता हूं जिन्हें रिपॉजिटरी में ट्रैक किया जा रहा है?
कमांड लाइन git का उपयोग करते हुए, मैं git को उन फ़ाइलों की सूची कैसे दिखा सकता हूं जिन्हें रिपॉजिटरी में ट्रैक किया जा रहा है?
जवाबों:
यदि आप शाखा के अंतर्गत वर्तमान में ट्रैक की जा रही सभी फाइलों को सूचीबद्ध करना चाहते हैं master
, तो आप इस कमांड का उपयोग कर सकते हैं:
git ls-tree -r master --name-only
यदि आप उन फ़ाइलों की सूची चाहते हैं जो कभी भी मौजूद थीं (अर्थात हटाई गई फ़ाइलों सहित):
git log --pretty=format: --name-only --diff-filter=A | sort - | sed '/^$/d'
git
सीधे निर्देशिकाओं को संस्करणित नहीं करता है। इसके बजाय यह फाइलों और उनके रास्तों को संग्रहीत करता है। ls-tree
सभी संस्करणित फ़ाइलों को आउटपुट करेगा। इस अंतर को बेहतर ढंग से समझने के लिए, एक खाली निर्देशिका का मंचन करने का प्रयास करें git
। खाली निर्देशिका का मंचन परिवर्तनों में कभी नहीं दिखाई देगा। ऐसी खाली निर्देशिका को संस्करणित करने का एकमात्र तरीका वास्तव में निर्देशिका के तहत एक फ़ाइल का संस्करण है। उपयोग के मामलों के लिए जहां आपको संस्करण नियंत्रण में ऐसे खाली प्लेसहोल्डर निर्देशिका की आवश्यकता होती है, आप निर्देशिका के तहत एक डमी फ़ाइल बना सकते हैं, और वह संस्करण। मुझे उम्मीद है कि स्पष्टीकरण स्पष्ट है।
ls-tree master
नहीं दिखाता है ।
Git द्वारा प्रबंधित फ़ाइलों को दिखाया गया है git ls-files
। इसका मैन्युअल पृष्ठ देखें।
ls
... याls -R
git ls-tree
- यह सापेक्ष है pwd
।
स्वीकृत उत्तर केवल वर्तमान निर्देशिका के ट्री में फ़ाइलें दिखाता है। ट्रैक की गई सभी फ़ाइलों को दिखाने के लिए जो (वर्तमान शाखा पर) प्रतिबद्ध हैं, का उपयोग करें
git ls-tree --full-tree --name-only -r HEAD
--full-tree
आदेश को चलाने के रूप में यदि आप रेपो की मूल निर्देशिका में थे।-r
उपनिर्देशिकाओं में पुनरावर्ती। के साथ संयुक्त --full-tree
, यह आपको सभी प्रतिबद्ध, ट्रैक की गई फ़ाइलें देता है।--name-only
जब आप फ़ाइल पथ चाहते हैं तो SHA / अनुमति जानकारी निकाल देता है।HEAD
निर्दिष्ट करता है कि आप किस शाखा के लिए ट्रैक की गई, प्रतिबद्ध फ़ाइलों की सूची चाहते हैं। आप इसे master
या किसी अन्य शाखा के नाम में बदल सकते हैं , लेकिन HEAD
क्या आपने अभी जांच की है।यह ~ डुप्लिकेट प्रश्न https://stackoverflow.com/a/8533413/4880003 के स्वीकृत उत्तर से विधि है ।
आप इसके साथ रंगीन आउटपुट चाहते हो सकते हैं।
मैं इस एक लाइनर का उपयोग वर्तमान शाखा की वर्तमान निर्देशिका में ट्रैक की गई फ़ाइलों और निर्देशिकाओं को सूचीबद्ध करने के लिए करता हूं:
ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)
आप इसे एक उपनाम के रूप में जोड़ना चाह सकते हैं:
alias gl='ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)'
यदि आप फ़ाइलों की पुनरावर्ती सूची बनाना चाहते हैं:
'ls' --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)
और एक उपनाम:
alias glr="'ls' --color=auto -d \$(git ls-tree -rt \$(git branch | grep \\* | cut -d \" \" -f2) --name-only)"
glr
उपनाम थोड़ा अजीब लग रहा था इसलिए मैंने आपके द्वारा प्रदान किए गए पहले उपनाम के प्रारूप के साथ एक संस्करण को और अधिक सुसंगत बना दिया alias glr='ls --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)'
:। git version 2.20.1
डेबियन 10 के साथ परीक्षण किया गया