컴퓨터 공학

👉 [GIT] 잘못된 파일 및 커밋 히스토리 완전 삭제

bitcodic 2022. 10. 14. 10:33

불이나도 해야하는 것은 저장이다. 그리고 개발자들이 제일 많이 써야하는 저장은 Git Commit + Push 아닐까.

 

그러나 문제는 원격 저장소인 Github에 잘못 파일이 올라가는 일이 발생한다는 것이다.

 

보통은 .gitignore 를 활용하면, 특정 폴더 혹은 파일에 대해서 예외처리가 가능하다.

 

허나 나의 경우, 실수로 ignore 처리가 되지 않아 API KEY 값이 업로드된 경험이 있다.

 

특히 AWS Key 같은 경우, 조심해야 하는게 나쁜녀석들이 키를 크롤링해가서 채굴기로 쓴다고 한다.

그렇게 몇천만원 나온 경우를 검색하면 심심치 않게 볼 수 있다.

 

이렇게만 쳐도 나온다...

물론 가져다 쓰는 녀석들이 잘못된 것이지만, 애초에 Key 값 같은 중요한 데이터들은 확실하게 관리하지 않은 컨트리뷰터의 잘못도 있다.

나 같은 경우는 상용 서비스는 서버를 내리기 전까지는 오픈소스화 하지 않는다. 로그 들여다 보면 이상한 꼬맹이 개발자(혹은 해커)친구들이 자꾸 뚫을려고 시도하는 것을 많이 봐왔기 때문이다. (제발 그만해~~ 이러다 다 죽어...)

 

서론이 길었다. Filter-branch 명령어 방법으로 해결 가능하다.

 

해당 명령어 Description 에 따르면, 브랜치를 재작성하고 각 리비전에 사용자 정의 필터를 적용하여 Git 히스토리를 다시 작성할 수 있다고 한다. 

 

 

(1) 명령어 입력

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch '[path/filename]'" --prune-empty --tag-name-filter --cat --all

 

이때 path 와 file name 을 정확하게 적어줘야 한다. github 내 copy path 기능을 활용하자.

git push origin main --force

푸시를 강하게! 해주자. 해당 히스토리 작업이 반영될 것이다. force는 원격 저장소 데이터에 내용을 덮어씌우기 딱 좋기 때문에, 조심해서 쓰자.

 

(2) 확인하기

아마 해당 Repository 접근시, 파일이 없어진 것을 확인할 수 있따.

 

그러나.

해당 파일에 대해 검색해보자. 이렇게 했을 때, 아직 남아있는 경우가 있다. 이런 경우는 원격 저장소인 Github 자체에서 남아있는 Cache 때문에 나타난다고 한다. 검색으로 입력이 가능해버리면, 사실상 안지운거나 마찬가지이므로 끝까지 처리해주자.

 

찾아보니, 고객 지원팀에 연락하면 지워준다고 한다. 해당 링크와 함께 연락해보자.

 

(3) 고객지원 연락하기

거진 6시간만에 처리되었다고 답장이 왔다. (혹시 몰라 링크는 가렸다.)

 

다음부터 조심하라고 한다. 고마워요 알란!