무시해야 하는 git 저장소의 모든 커밋된 파일을 삭제합니다.

무시해야 하는 git 저장소의 모든 커밋된 파일을 삭제합니다.

최근에 git 저장소를 시작했지만 .gitignore파일을 추가하는 것을 잊어버렸습니다. 처음 커밋한 후 저장소에는 무시해야 할 하위 디렉터리와 파일이 많이 있습니다. .gitignoreGitLab 또는 GitHub와 같은 도구에 파일을 생략하지 않고 저장소를 추가한 다음 푸시하는 효율적인 방법이 있습니까 ?

답변1

작업 디렉터리에서 무시된 모든 파일을 삭제해도 괜찮다면 다음 명령은 삭제를 위해 커밋되었지만 무시된 모든 파일을 준비합니다.

find . -print0 | git check-ignore -z --stdin --no-index | xargs -0 git rm -f -r --cached --ignore-unmatch --

(GNU find와 최신 버전이라고 가정 git) git check-ignore.또한 무시된 다른 파일이나 디렉터리도 삭제됩니다.

이는 현재 디렉터리부터 시작하는 모든 파일과 디렉터리를 나열하고, 무시되는지(커밋된 경우에도) 확인하고, 커밋되었는지, 추적되지 않았는지 등에 관계없이 삭제합니다.

이는 .gitignore트리의 모든 파일에 적용됩니다( git구성의 다른 위치에서도 가능).

변경 사항을 추적하고 커밋합니다. 변경 사항은 새로운 커밋이므로 강제로 푸시할 필요가 없습니다. 무시된 것으로 추정되는 파일에 대한 모든 참조를 제거하기 위해 기록을 다시 작성하는 것은 약간 더 복잡한 작업입니다.

관련 정보