जवाबों:
यदि आप एक विशिष्ट शाखा के लिए सभी फाइलों को सूचीबद्ध करना चाहते हैं, जैसे master
:
git ls-tree -r master --name-only
-r
विकल्प यह निदेशिकाओं में recurse और संस्करण नियंत्रण के तहत वर्तमान में प्रत्येक फ़ाइल को मुद्रित करने देगा। आप किसी अन्य शाखा के लिए सूची प्राप्त करने के HEAD
बजाय निर्दिष्ट कर सकते master
हैं, जिसमें आप हो सकते हैं।
यदि आप कभी मौजूद सभी फ़ाइलों की सूची प्राप्त करना चाहते हैं, तो यहां देखें :
git log --pretty = format: --name-only --diff-filter = A | सॉर्ट -यू
git ls-tree -r master --name-only
आवश्यकता के बिना, पहले विकल्प के समान होगा cut
। आह, और आप HEAD
इसके बजाय निर्दिष्ट कर सकते हैं master
यदि आप इस सूची को केवल उस शाखा के लिए चाहते हैं जो आप वर्तमान में हैं।
-
? यह कुछ अतिरिक्त पंक्तियों को एक दूसरे कॉलम में कुछ फ़ाइलों को दिखाने का कारण बनता है जो पहले से दोहराए जाते हैं।
git ls-files
आदेश है कि तुम क्या जरूरत है क्या करेंगे।
स्रोत: http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html
git ls-files
इसके बजाय git ls-tree -r master --name-only
निश्चित रूप से सरल है।
git-ls-files
बाइनरी नहीं है । नहीं है git
के साथ द्विआधारी ls-files
आदेश। प्रलेखन के लिए लिंक सामग्री में सही है, लेकिन तकनीकी रूप से एक पुरानी बाइनरी के लिए।
git-commit
, git-init
, git-ls-files
, आदि भले ही कार्यक्रमों वास्तव में subcommands हैं। git-ls-files
बाइनरी कभी नहीं थी , सबसे अधिक संभावना थी। तर्क यह है कि यह बाहरी उपकेंद्र तंत्र के अनुरूप है, जो आपको बाइनरी git foo
लिखकर कमांड दर्ज करने की अनुमति देता है git-foo
।
git ls-files
केवल वर्तमान कार्य निर्देशिका में फ़ाइलें प्रिंट करेगा।
यदि, उदाहरण के लिए, आपके पास dotfiles ( core.worktree = /
) के लिए git रेपो है , तो आपके पास git रूट के बाहर फाइलें होंगी और वह सरल कमांड अब काम नहीं करेगा।
संक्षेप में, यह काम करेगा:
git --git-dir "`git rev-parse --git-dir`" \
-C "`git config core.worktree || pwd`" \
ls-files
उदाहरण:
mkdir ~/dotfiles
cd ~/dotfiles
git config core.worktree /
# Ignore all files by default, else Git will find all files under "/"
echo "*" > .git/info/exclude
# Add files at the git repo's root and somewhere in the work tree
touch README
git add -f README
git add -f /etc/ssh/sshd_config
# `git status` would now print:
# new file: ../../../etc/ssh/sshd_config
# new file: README
git status
git commit -m "Initial commit"
# At this point, `git ls-files` prints only:
# README
git ls-files
# But you can print all files inside the work tree. This will print:
# etc/ssh/sshd_config
# home/yourusername/dotfiles/README
git --git-dir "`git rev-parse --git-dir`" -C "`git config core.worktree || pwd`" ls-files
यदि आप अपने वर्तमान (शेल) निर्देशिका के सापेक्ष निर्दिष्ट पथ चाहते हैं , तो यह कार्य करता है:
alias gls='git ls-tree -r master --name-only HEAD "`git config core.worktree`"'
और ऊपर के उदाहरण में, यह प्रिंट होगा
README
../../../etc/ssh/sshd_config
git ls-files
में, वर्तमान निर्देशिका में और नीचे सभी दिखाता है। यह सिर्फ रेपो में डिलीट की गई फाइलों को नहीं दिखाता है।
आप gitk
इंटरेक्टिव रिपॉजिटरी व्यूअर का भी उपयोग कर सकते हैं ।
कृपया छवि पर एक नज़र डालें, दाईं ओर दो विकल्प पैच और ट्री हैं। यदि आप पेड़ चुनते हैं, तो आप प्रत्येक कमिट के लिए फ़ोल्डर संरचना देख सकते हैं।