क्या उन 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
।