트리에 gigitnored 파일 숨기기


15

tree에서 무시되는 파일을 표시하지 않는 방법이 .gitignore있습니까?


2
무시할 수있는 모든 파일을 실제로 고려하려면의 출력을 구문 분석하십시오 git ls-files.
Franklin Yu

답변:


5

필터 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}" "$@"
}

8

트리는 -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지원 하는 패턴이 git과 @Brad Urani가 지적한 것과 다릅니다.

그러나 우리는 가까이 갈 수 있습니다 ...

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
}

좋은! 이것이 .gitignore에서 주석 줄을 제거하지 않는다는 사실이 문제를 일으킬 것이라는 것이 맞습니까?
Brad Urani

나는 또한 홈 디렉토리 외부의 .gitignore 파일을 존중하지 않을 것이라고 생각합니다.
Brad Urani

@BradUrani- git명령을 사용 하여 파일을 찾으려고 내 답변을 업데이트했습니다 . 반환되는 내용은 설정에 따라 다릅니다.
DarkHeart

이것은 나를 위해 작동하지 않습니다, 나는 내 ~/.gitignore심볼릭 링크 이기 때문에 생각 합니다. 나는 git무시 된 것을 말해 줄 수있는 방법 을 찾으려고 노력했지만 올바른 조합을 찾기위한 모든 노력은 계속해서 어려움이나 모호한 상황에 처하게됩니다.
브래드 우 라니

또한 완벽한 해결책이 없다고 생각하게 만드는 tree -I모든 글 로빙 옵션을 존중 하는 것처럼 보입니다 .gitignore. 내가 어제 밤에 와서 제일 근사하다 echo "node_modules|tmp|_build" > ~/.treeignoretree -I "$(cat ~/.treeignore)"
브래드 Urani
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.