सवाल गिट - वर्तमान में स्रोत नियंत्रण के तहत सभी फाइलों की सूची?


क्या वर्तमान में गिट में स्रोत नियंत्रण के तहत सभी फाइलों को सूचीबद्ध करने का कोई तरीका है? (न केवल उन लोगों को संशोधित किया गया है)।


93
2018-05-28 13:12


मूल




जवाब:


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

गिट एलएस-पेड़ -r मास्टर - नाम केवल

-r विकल्प इसे उपनिर्देशिका में पुन: स्थापित करने और वर्तमान में संस्करण नियंत्रण के तहत प्रत्येक फ़ाइल को प्रिंट करने देगा। आप भी निर्दिष्ट कर सकते हैं HEAD के बजाय master किसी अन्य शाखा के लिए सूची प्राप्त करने के लिए जो आप हो सकते हैं।

यदि आप कभी भी मौजूद सभी फाइलों की एक सूची प्राप्त करना चाहते हैं, यहाँ देखें:

गिट लॉग --pretty = प्रारूप: --नाम-स्थिति | कट-एफ 2- | sort -u

99
2018-05-28 13:19



धन्यवाद स्लैक, ठीक उसी के बाद मैं क्या था - और दूसरे के बारे में भी जानना उपयोगी था। जब मुझे अनुमति है तो ढाई मिनट में सही के रूप में चिह्नित होगा। :-) - Anonymous
जवाब के लिए धन्यवाद। मुझे इसकी तलाश थी। ध्यान दें कि git ls-tree -r master --name-only बिना किसी आवश्यकता के पहले विकल्प के समान ही होगा cut। आह, और आप निर्दिष्ट कर सकते हैं HEAD के बजाय master यदि आप इस सूची को जो भी शाखा वर्तमान में चालू कर रहे हैं, उसके लिए चाहते हैं। - maurits
"गिट एलएस-फाइल" चलाना आपको कुछ पात्रों को बचाएगा :) - Zain R


git ls-files आदेश आपको जो चाहिए वह करेगा।

स्रोत: http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html


50
2017-11-27 09:36



git ls-files के बजाय git ls-tree -r master --name-only निश्चित रूप से सरल है। - karatedog
क्षमा करें, लेकिन मेरा संपादन अमान्य नहीं था। वर्तमान गिट में कोई नहीं है git-ls-files द्विआधारी। वहाँ है git के साथ बाइनरी ls-files आदेश। दस्तावेज का लिंक सामग्री में सही है, लेकिन तकनीकी रूप से पुरानी बाइनरी के लिए। - JonnyJD
@JonnyJD, शायद अमान्य चिह्नित है क्योंकि आपका संपादन एक टिप्पणी होना चाहिए। - Ascherer
@ जॉनीजेडी सभी गिट मैन पेजों को नामित किया गया है git-commit, git-init, git-ls-files, आदि। हालांकि कार्यक्रम वास्तव में उपमहाद्वीप हैं। वहां कभी नहीं था git-ls-files द्विआधारी, सबसे अधिक संभावना है। तर्क यह है कि यह बाहरी उप-संचार तंत्र के अनुरूप है, जो आपको एक रजिस्टर करने की अनुमति देता है git foo लिखकर आदेश git-foo द्विआधारी। - Radon Rosborough


git ls-files केवल मौजूदा कार्यशील निर्देशिका में फ़ाइलों को मुद्रित करेगा।

उदाहरण के लिए, आपके पास dotfiles के लिए एक गिट रेपो है (core.worktree = /), तो आपके पास गिट रूट के बाहर फाइलें होंगी और वह सरल कमांड अब काम नहीं करेगा।

संक्षेप में, यह काम करेगा:

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

3
2017-10-16 06:23





आप भी इसका उपयोग कर सकते हैं gitk इंटरैक्टिव रिपोजिटरी दर्शक।


0
2018-03-12 19:16



यह एक उपकरण का उल्लेख करता है, लेकिन वास्तव में "कैसे" का जवाब नहीं देता है। क्या आप इसे एक क्रियाशील समाधान में विस्तारित कर सकते हैं? बस अपने स्वयं के समाधान को विकसित करने के लिए किसी शोध दिशा में किसी को इंगित करना एक टिप्पणी के रूप में अधिक उपयुक्त है। धन्यवाद। समीक्षा से - fixer1234