현재 준비되었거나 커밋 된 git에서 무시한 파일을 나열하는 방법은 무엇입니까?
.gitignore 파일의 규칙과 일치하지만 과거에 준비되거나 커밋 된 파일 목록을 어떻게 얻습니까?
에 대한 문서 ls-files
는 정확하게 작성되지 않았지만 다음과 같은 간단한 별칭이 작업을 수행하는 것으로 보입니다.
git config --global alias.showtrackedignored "ls-files -i --exclude-standard"
위의 명령은라는 별칭을 만듭니다 showtrackedignored
. 사용하려면 다음을 실행하십시오.
git showtrackedignored
현재 디렉터리와 추적되는 하위 디렉터리에있는 모든 파일을 나열하지만 추적되지 않으면 무시됩니다.
버그 git ls-files
불행히도 이것은 100 % 안정적으로 작동하지 않습니다. 분명히 힘내해야하는 파일 찾는 좋은 직장 수행 하지 무시,하지만 파일을 검색 할 때 하는 무시합니다 ( -i
에 옵션 git ls-files
)는이 규칙을 무시 일치하는 디렉토리의 경우,이 디렉토리에 있지 목록 무시 파일을 수행합니다.
이 버그를 해결하려면 무시 규칙을 변환하여 디렉토리가 아닌 파일 만 일치 시키십시오 (항상 가능한 것은 아닙니다).
( 이 버그를 발견 하고 Git 메일 링리스트에보고 해 주신 Christoph 에게 감사드립니다 ! 편집 : 현재 패치가 진행 중이며 git 1.7.11.2 이상으로 만들 것입니다)
대체 접근법
여기에 다른 접근 방식이 있습니다. 훨씬 더 복잡하고 코너 케이스가 손상되었을 수 있습니다.
git config --global alias.showtrackedignored '!
cd "${GIT_PREFIX}" &&
untracked_list=$(git rev-parse --git-dir)/ignored-untracked.txt &&
git ls-files -o -i --exclude-standard >"${untracked_list}" &&
GIT_INDEX_FILE="" git ls-files -o -i --exclude-standard | grep -Fvxf "${untracked_list}" &&
rm -rf "${untracked_list}"'
별칭은 다음을 수행합니다.
cd
다시 디렉토리git showtrackedignored
에서 실행 된 (힘내는 최상위 디렉토리가 아닌 현재 디렉토리에서 쉘 기반 별칭을 실행;에 절을 참조하십시오alias.*
에서git help config
)- 라는 변수를 정의하십시오
untracked_list
. 이 변수는 현재 무시 된 파일 목록을 포함 할 임시 파일의 경로를 보유합니다. 이 임시 파일은.git
디렉토리에 있습니다. - 무시 된 파일 목록을
${untracked_list}
. - Git에게 인덱스가 비어있는 것처럼 작동하도록 지시하고 무시 된 모든 파일을 나열합니다.
- 해당 출력을로 파이프
grep
하여에 기록 된 파일을 필터링합니다${untracked_list}
. - 임시 파일을 삭제하십시오
${untracked_list}
.
이 접근 방식의 단점 :
.git
디렉토리에 임시 파일을 생성합니다 .- POSIX 호환 쉘이 있다고 가정합니다.
- POSIX 호환 구현이 있다고 가정합니다
grep
.
또한 이전 별칭과 동일한 버그가 있습니다.
Richard의 대답에 따라 여기에 남겨 두겠습니다.
git ls-files -i --exclude-standard | xargs git rm --cached
에서 무시되는 모든 추적 파일이 삭제됩니다 .gitignore
.
이 질문은 https://stackoverflow.com/a/467053에 의해 잘 답변되었습니다 . 기본적으로 git clean -ndX는 안전하게 무시할 수있는 것을 알려줍니다.
'Program Tip' 카테고리의 다른 글
UDID 및 재 컴파일을 관리하지 않고 무선으로 iOS 애플리케이션을 배포하는 방법 (0) | 2020.12.01 |
---|---|
Java가 SSL 핸드 셰이크 중에 클라이언트 인증서를 보내지 않는 이유는 무엇입니까? (0) | 2020.12.01 |
httptest를 사용하여 Go에서 http 호출을 테스트하는 방법 (0) | 2020.12.01 |
for 또는 while없이 생성자의 무한 루프 (0) | 2020.12.01 |
localstorage (또는 다른 곳)에서 ES6 맵을 유지하려면 어떻게해야합니까? (0) | 2020.12.01 |