트리가 gitignored 파일을 숨기도록 허용

트리가 gitignored 파일을 숨기도록 허용

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

답변1

다른 방법을 사용하는 경우트리 1.8.0 이 플래그를 지원하기 때문에 --fromfile:

--fromfile

    파일 시스템이 아닌 파일에서 디렉터리 목록을 읽습니다. 명령줄에 제공된 경로는 검색할 디렉터리가 아니라 읽을 파일입니다. 가리키다(.) 디렉토리는 트리가 표준 입력에서 경로를 읽어야 함을 나타냅니다.

이를 사용하여 git ls-treegit에서 무시하지 않는 프로젝트의 모든 파일을 가져오고 출력을 tree.

ignored파일이 무시되는 git 저장소가 있다고 가정해 보겠습니다 .gitignore.

git_repo
├── .gitignore
├── bar
│   ├── b.txt
│   └── ignored
├── foo
│   ├── a.txt
│   └── ignored
└── ignored

다음 명령:

git ls-tree -r --name-only HEAD | tree --fromfile

다음을 제공합니다:

.
├── .gitignore
├── bar
│   └── b.txt
└── foo
    └── a.txt

2 directories, 3 files

또는 특정 경로가 필요한 경우:

git ls-tree -r --name-only HEAD foo | tree --fromfile

다음을 제공합니다:

.
└── a.txt

0 directories, 1 file

지침

  • 경계하다파일이 삭제되거나 이름이 변경된 등 아직 커밋되지 않은 변경 사항으로 인해 git ls-tree디스플레이가 동기화되지 않을 수 있습니다.

답변2

립그랩기본적으로 .gitignore(다른 "무시된" 파일과 함께) 존중되며 git 명령을 대체하여 사용할 수 있습니다. 차이점은 버전 관리에 커밋되지 않은 경우에도 모든 파일(숨겨진 파일 제외)이 나열된다는 것입니다.

rg --files | tree --fromfile

이는 먼저 디렉토리를 정렬하고 보다 유연한 사용을 허용하는 쉘 기능을 생성하는 데 사용할 수 있습니다(디렉토리 경로 지정 및 ripgrep 플래그 추가).

rg,tree() { rg --files $@|tree --fromfile --dirsfirst }

다른 답변에서 지적했듯이 tree > 1.8이 필요합니다.

답변3

트리는 -I플래그를 지원합니다.

-I pattern

    와일드카드 패턴과 일치하는 파일을 나열하지 마십시오.

트리는 일치하는 모든 파일/디렉터리를 제외하는 단일 패턴을 지원합니다.

Git의 무시 파일은 약간 복잡합니다.

제외는 여러 파일, $HOME/.config/git/ignore출력(디렉터리별) 등에서 발생할 수 있습니다( 참조).git config --get core.excludesfile.gitignore~/.gitignoreman gitignore

또 다른 문제는 지원되는 모드가 treegit의 기능과 다르다는 것입니다(@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
}

답변4

--gitignore2021년 12월 출시된 버전 2.0.0부터는 tree에 대한 옵션이 있습니다.

https://gitlab.com/OldManProgrammer/unix-tree/-/blob/master/CHANGES

관련 정보