다음은 현재 제외 패턴 세트에서 무시되는 파일을 "추적 해제"하는 한 가지 방법입니다.
(GIT_INDEX_FILE=some-non-existent-file \
git ls-files --exclude-standard --others --directory --ignored -z) |
xargs -0 git rm --cached -r --ignore-unmatch --
그러면 파일이 작업 디렉토리에 남지만 색인에서 제거됩니다.
여기서 사용되는 트릭은 존재하지 않는 인덱스 파일을 git ls-files에 제공하여 추적 된 파일이 없다고 생각하는 것입니다. 위의 쉘 코드는 색인이 비어 있으면 무시 될 모든 파일을 요청한 다음 git rm을 사용하여 실제 색인에서 제거합니다.
파일이 "추적되지 않은"후에는 git status를 사용하여 중요한 항목이 제거되지 않았는지 확인하십시오 (그렇다면 제외 패턴을 조정하고 git reset-path를 사용하여 제거 된 색인 항목을 복원하십시오). 그런 다음“크루 드”를 제거하는 새로운 커밋을 만드십시오.
“크루 드”는 여전히 오래된 커밋에 있습니다. 정말로 깨끗한 기록이 필요한 경우 git filter-branch를 사용하여 이전 커밋의 깨끗한 버전을 생성 할 수 있습니다 (git filter-branch를 사용하면 "히스토리를 다시 작성합니다". “crud”가 처음 소개 된 이후의 모든 역사적 커밋.
git rm --cached
전체 디렉토리를 만들 수 있습니다.-r