개요

깃에 의해 관리되지 않아야하는 파일을 실수로 Github에 올렸을 때 대처방법에 대해 알아보자

실수했다

환경변수를 적어놓은 파일을 .gitignore에 등록했지만 파일이 워낙 많았던 관계로 실제로 추적이 중단되었는지 확인하지 않고 올려버렸다. 여기엔 외부로 노출되면 안되는 API KEY도 포함되어있었다.

처음에는 레포지토리를 날리려고했지만 키를 다시 발급받으면 커밋 내역에 남아있는 값이 무효가되니까 보안적으로 문제가 없을 것 같았다. 그래서 일단 .gitignore에 추가하고 다시 올리지 않기로했다.

이미 올라간 파일의 경우 gitignore에 추가해도 원격 저장소에서 삭제되거나 하지 않는다.

그래서 아래의 명령어를 통해 삭제해야한다.

git rm --cached -r 파일이름

git rm명령어는 깃에서 추적을 시작한 파일을 제거하거나 삭제할 때 사용한다.

--cached옵션은 파일 혹은 디렉토리를 원격에서만 제거하고 실제 로컬에서는 유지하는 옵션이고 -r은 디렉토리내의 모든 파일과 서브 디렉토리를 포함하여 제거한다는 의미다.

뒤에 나올 파일이름 혹은 디렉토리는 깃허브 상에서 확인하고 적어주면 된다.

예를 들어 application.yml이라면 git rm --cached -r src/main/resources/application.yml
위와 같이 적어주면 된다.
여기까지 하면 로컬에 해당 파일이 삭제되는 변경사항이 감지된다. 이걸 커밋하고 푸시하면 원격에서 파일이 사라진다.

그리고 .gitignore파일에 잘 등록이 됐는지도 확인하면 끝. 인텔리제이의 경우 .gitignore에 등록된 파일은 노란색으로 표시되니 내가 깃허브에 올리지 않기를 원하는 파일이 노란색으로 나오는지 확인하면 된다.