क्या उन treeफ़ाइलों को न दिखाने का एक तरीका है जिन्हें अनदेखा किया जाता है .gitignore?
क्या उन treeफ़ाइलों को न दिखाने का एक तरीका है जिन्हें अनदेखा किया जाता है .gitignore?
जवाबों:
यह मदद कर सकता है: फ़िल्टर के gitलिए लगभग-संगत तरीके से अनदेखा फ़ाइलों की सूची tree:
function tree-git-ignore {
# tree respecting gitignore
local ignored=$(git ls-files -ci --others --directory --exclude-standard)
local ignored_filter=$(echo "$ignored" \
| egrep -v "^#.*$|^[[:space:]]*$" \
| sed 's~^/~~' \
| sed 's~/$~~' \
| tr "\\n" "|")
tree --prune -I ".git|${ignored_filter: : -1}" "$@"
}
वृक्ष -Iध्वज का समर्थन करता है ।
-I pattern Do not list those files that match the wild-card pattern.
ट्री एक एकल पैटर्न का समर्थन करता है जो सभी फाइलों / निर्देशिकाओं को बाहर कर देगा जो इसे मेल खाते हैं।
Git की अनदेखी फ़ाइलें थोड़ी अधिक जटिल हैं:
बहिष्करण एकाधिक फ़ाइलों $HOME/.config/git/ignoreसे git config --get core.excludesfile, .gitignore(प्रति निर्देशिका) ~/.gitignore, और अधिक (देखें man gitignore) के आउटपुट से आ सकता है ।
एक अन्य समस्या पैटर्न है जो treeसमर्थन करता है जो गिट से भिन्न होता है (जैसा कि @ ब्रैड उरानी द्वारा नोट किया गया है)।
लेकिन हम करीब- ish प्राप्त कर सकते हैं ...
tree -I "$(grep -hvE '^$|^#' {~/,,$(git rev-parse --show-toplevel)/}.gitignore|sed 's:/$::'|tr \\n '\|')"
या एक समारोह के रूप में:
function gtree {
git_ignore_files=("$(git config --get core.excludesfile)" .gitignore ~/.gitignore)
ignore_pattern="$(grep -hvE '^$|^#' "${git_ignore_files[@]}" 2>/dev/null|sed 's:/$::'|tr '\n' '\|')"
if git status &> /dev/null && [[ -n "${ignore_pattern}" ]]; then
tree -I "${ignore_pattern}" "${@}"
else
tree "${@}"
fi
}
gitफ़ाइल खोजने का प्रयास करने के लिए आदेशों का उपयोग करने के लिए अपना उत्तर अपडेट किया है । वह रिटर्न क्या आप पर निर्भर करता है कि आपके पास क्या सेटिंग है।
~/.gitignoreएक सहानुभूति है। मैं इस बात पर भरोसा करने का एक तरीका ढूंढने की कोशिश कर रहा gitहूं कि मुझे क्या अनदेखा किया गया है, लेकिन सही संयोजन खोजने के मेरे सभी प्रयास कठिनाइयों या अस्पष्ट स्थितियों में चलते रहते हैं।
tree -Iसभी ग्लोबिंग विकल्पों का सम्मान .gitignoreकरता है जो मुझे लगता है कि कोई सही समाधान नहीं है। बेस्ट सन्निकटन मैं कल रात के साथ आया है echo "node_modules|tmp|_build" > ~/.treeignoreऔरtree -I "$(cat ~/.treeignore)"
git ls-files।