मैं कैसे ट्रैक की जाने वाली फ़ाइलों की सूची दिखा सकता हूं?


535

कमांड लाइन git का उपयोग करते हुए, मैं git को उन फ़ाइलों की सूची कैसे दिखा सकता हूं जिन्हें रिपॉजिटरी में ट्रैक किया जा रहा है?



2
मेरा मानना ​​है कि यह है। लेकिन जब इसे बेहतर जवाब दिया जाता है तो इसे गलत के रूप में चिह्नित करना सही नहीं होगा।
lindhe

5
एक समांतर ब्रह्मांड में, यह अस्वाभाविक है कि यह प्रश्न सभी उत्तरों सहित समान है, फिर भी प्रत्येक अपने विशिष्ट स्वभाव के साथ।
जेफ पकेट

जवाबों:


628

यदि आप शाखा के अंतर्गत वर्तमान में ट्रैक की जा रही सभी फाइलों को सूचीबद्ध करना चाहते हैं master, तो आप इस कमांड का उपयोग कर सकते हैं:

git ls-tree -r master --name-only

यदि आप उन फ़ाइलों की सूची चाहते हैं जो कभी भी मौजूद थीं (अर्थात हटाई गई फ़ाइलों सहित):

git log --pretty=format: --name-only --diff-filter=A | sort - | sed '/^$/d'

61
Git ls-tree -r HEAD --name-only का उपयोग करें, यदि आप वर्तमान शाखा की फ़ाइलों को सूचीबद्ध करना चाहते हैं
Ramast

3
निर्देशिकाओं को सूचीबद्ध क्यों नहीं किया जाता है?
शुज़िआंग

13
@NicolasLykkeIversen - gitसीधे निर्देशिकाओं को संस्करणित नहीं करता है। इसके बजाय यह फाइलों और उनके रास्तों को संग्रहीत करता है। ls-treeसभी संस्करणित फ़ाइलों को आउटपुट करेगा। इस अंतर को बेहतर ढंग से समझने के लिए, एक खाली निर्देशिका का मंचन करने का प्रयास करें git। खाली निर्देशिका का मंचन परिवर्तनों में कभी नहीं दिखाई देगा। ऐसी खाली निर्देशिका को संस्करणित करने का एकमात्र तरीका वास्तव में निर्देशिका के तहत एक फ़ाइल का संस्करण है। उपयोग के मामलों के लिए जहां आपको संस्करण नियंत्रण में ऐसे खाली प्लेसहोल्डर निर्देशिका की आवश्यकता होती है, आप निर्देशिका के तहत एक डमी फ़ाइल बना सकते हैं, और वह संस्करण। मुझे उम्मीद है कि स्पष्टीकरण स्पष्ट है।
Tuxdude

2
ध्यान दें, स्टेजिंग क्षेत्र में ट्रैक की गई फ़ाइलों को ls-tree masterनहीं दिखाता है ।
nn0p

क्या यह केवल शीर्ष-स्तरीय निर्देशिका दिखाना संभव है अगर इसमें कई उपनिर्देशिकाएं और फाइलें शामिल हैं?
ब्लॉसज़र्ड

191

Git द्वारा प्रबंधित फ़ाइलों को दिखाया गया है git ls-files। इसका मैन्युअल पृष्ठ देखें।


4
ऐसा लगता है कि केवल वर्तमान निर्देशिका में या उससे नीचे की फाइलें दिखा रहा है।
लाइल जेड

11
यदि मैं मैनुअल पेज के संबंधित अनुभागों को शामिल करने के लिए इसे संपादित करता हूं तो मन?
नाथन बसानी

1
@NathanBasanese शायद आप उस जानकारी के साथ एक और उत्तर जोड़ सकते हैं।
जोस कास्त्रो

@ लेज़्ज़ शायद यह इरादा रखने के लिए है ls... याls -R
flow2k

1
@ लाइलज़ इसके अलावा, यह व्यवहार उसी के साथ है git ls-tree- यह सापेक्ष है pwd
flow2k

18

स्वीकृत उत्तर केवल वर्तमान निर्देशिका के ट्री में फ़ाइलें दिखाता है। ट्रैक की गई सभी फ़ाइलों को दिखाने के लिए जो (वर्तमान शाखा पर) प्रतिबद्ध हैं, का उपयोग करें

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 के स्वीकृत उत्तर से विधि है ।


धन्यवाद! यह नंगे रेपो के लिए भी काम करता है।
hzpc-joostk

5

आप इसके साथ रंगीन आउटपुट चाहते हो सकते हैं।

मैं इस एक लाइनर का उपयोग वर्तमान शाखा की वर्तमान निर्देशिका में ट्रैक की गई फ़ाइलों और निर्देशिकाओं को सूचीबद्ध करने के लिए करता हूं:

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 के साथ परीक्षण किया गया
बालकटाई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.