내 파일에 다음 항목이 있는데 .gitignore
삭제하고 싶습니다. 그 이유는 이 파일들이 TeX 컴파일 중에 생성된 임시 정크 파일이고 삭제할 수 있기를 원하기 때문입니다.
어떻게 해야 하나요?
답변1
git clean -Xdf
자본으로 -X
,git clean
오직일치하는 파일을 삭제합니다 .gitignore
.
를 사용하면 -d
일치 git clean
하는 디렉터리 전체도 삭제됩니다 .gitignore
.
을 사용하면 -f
경고 git clean
하는 대신 실제로 콘텐츠가 삭제됩니다. 그래도 조심하세요. 다른 이유(예: 개인 direnv
구성) 가 있을 수 있으므로 .gitignored
명령을 실행하기 전에 명령이 수행하는 작업을 항상 이해해야 합니다.
공유해주신 @Kusalananda에게 특별히 감사드립니다 git clean
.
git clean
대안으로, 심볼릭 링크 디렉터리가 포함된 종속성 폴더가 있고 모든 것을 재귀적으로 삭제하고 싶지 않은 경우~에이러한 디렉터리의 경우 다음과 같은 더 긴 형식을 사용할 수 있습니다.
git ls-files --others --ignored --exclude-standard --directory | head -c -1 | tr '\n' '\0' | xargs -0 -r rm -r
git ls-files
이 옵션을 사용하면 동일한 디렉터리를 나열 git clean -Xdn
하지만 컴퓨터에서 더 쉽게 읽을 수 있습니다.
head -c -1
후행 개행 바이트를 자릅니다.
tr '\n' '\0'
모든 개행 문자를 NUL
s로 변환합니다.
xargs -0 -r rm -r
파일과 디렉터리를 삭제합니다. 구분자를 -0
만드십시오 NUL
. -r
빈 입력을 건너뛰게 합니다(경고: 이것은 이식할 수 없는 GNU 확장입니다).
답변2
git clean -X -f -n
git clean -X
.gitignore
으로 삭제 -n
하면 파일이 삭제되지 않고 테스트 실행만 수행되고 파일이 보고됩니다.회의삭제되었습니다.
-d
무시된 디렉터리도 제거하기 위해 추가되었습니다 .
그렇지 않은 경우 -X
추적되지 않은 파일을 삭제합니다(그러나 무시된 파일은 삭제하지 않음).
바라보다 git clean --help
.
답변3
귀하의 경우 파일 항목이 .gitignore
다음으로 시작하지 않으면 !
다음 줄이 작동합니다.
while read -r entry;do rm -rf ${entry}; done < .gitignore