উত্তর:
এটি সাহায্য করতে পারে: ফিল্টার 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.
গাছ একটি একক প্যাটার্ন সমর্থন করে যা এর সাথে মেলে এমন সমস্ত ফাইল / ডিরেক্টরি বাদ দেবে।
গিটের উপেক্ষা করা ফাইলগুলি কিছুটা জটিল:
অব্যাহতির একাধিক ফাইল থেকে আসতে পারেন, $HOME/.config/git/ignore
, আউটপুট git config --get core.excludesfile
, .gitignore
(ডিরেক্টরির প্রতি), ~/.gitignore
এবং আরো অনেক কিছু (দেখুন man gitignore
)।
আর একটি সমস্যা হ'ল প্যাটার্নগুলি যা tree
সমর্থন করে গিটের চেয়ে আলাদা (@ ব্র্যাড উরানির দ্বারা উল্লিখিত)।
তবে আমরা ঘনিষ্ঠতা পেতে পারি ...
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
।