저장소가 아닌 폴더에서는 무시되는 git 상태 시뮬레이션

저장소가 아닌 폴더에서는 무시되는 git 상태 시뮬레이션

본질적으로 중복될 수 있습니다.이 문제, 그러나 내가 아는 한 제공된 Perl 스크립트는 내 경우에는 작동하지 않습니다. 여러 패턴을 찾는 질문도 많이 나오는데, 구글에서는 '패턴 파일'과 '파일명 패턴'을 구분하지 않는 것 같아서 검색이 의외로 어렵습니다.

나는 따르고 싶다

git status --ignored --porcelain | awk '{print $2}'

저장소가 아닌 폴더에 있습니다. 그건,다음 제약 조건을 사용하여 (지정된) 파일에 나열된 패턴과 일치하는 파일 및 디렉터리를 나열하고 싶습니다.:

  • 사용하는 모드입니다gitignore 구문, 특히 빈 줄과 주석은 스크립트에서 무시되어야 합니다.
  • 스크립트는 현재 작업 디렉터리에서 시작되어야 합니다.
  • 스크립트는아니요일치하는 디렉터리(즉, 일치 항목은 항상 리프임)로 이동하거나 기호 링크로 이동합니다.

간단한 예는 다음과 같습니다.

$> cat .gitignore 
    *.DS_Store*
    tmp/
    a/**/foo

$> tree -a .
.
|-- .DS_store
|-- .gitignore
|-- a
|   |-- b
|   |   |-- foo
|   |   |   `-- file
|   |   `-- tmp
|   |-- foo
|   `-- tmp
|       `-- file
`-- c
    |-- .DS_Store?
    `-- foo

5 directories, 8 files

$> git status --ignored --porcelain | awk '{print $2}'
    .DS_store
    a/b/foo/
    a/foo
    a/tmp/
    c/.DS_Store?

가능하다면 osx와 linux 모두에서 실행되고 posix-egrep 형식의 패턴을 고려하도록 확장될 수 있는 솔루션에 특히 관심이 있습니다. 마지막 부분에서는 이와 같은 작업이 find . -print | egrep -f patternfile작동하지만 일치하는 디렉터리로 이동하여 작업이 매우 느려질 수 있습니다.

관련 정보