GitHub History의 APIKEY 지우기

가온·2022년 1월 28일
3

작년 1년동안 했던 졸업프로젝트는 나의 첫 프로젝트로, 많은 실수와 역경이 담겨있다.
그중, 가장 큰 실수, 그리고 가장 날 힘들게 했던 것은 바로 API KEY가 포함된 파일을 아무생각없이 GitHub에 올렸던 것이다.
처음에는 이 프로젝트의 repository를 Private으로 놓고 작업했기 때문에 아무 생각 없이 잘 사용하고 있었다. 그리고 중간점검때 GitHub 주소를 복사하면서 Public으로 바꾸는 순간 다음과 같은 경고메일이 왔다. 그리고 그제야 나의 큰 실수를 깨닫게 되었다.

가장 간단하고 깔끔하게 정리하는 방법은 모든 히스토리(커밋)을 지우고 다시 커밋해라.. 하지만 중간점검 제출이 우선이었고 정신없었기에 다시 Private으로만 돌려놓고 나중에 생각하자 하고 말았다.
(그때라도 할껄...)
당연히 자연스럽게 시간은 흘렀고, 내가 했던 조취는 gitignore에 apikey가 포함되어 있는 파일을 추가하고 push를 했지만 파일은 사라지지 않았다. 그래서 git rm -r --cahced 를 이용하여 원격저장소에 있는 파일을 지우고 해결이 되었다고 생각하고 있었다. 일단은 경고 메일이 온후 구글링을 했을 때 100만원이 넘게 청구가 된 사람이 있다는 무시무시한 글을 보고서 확실히 지워졌다고 믿음이 없었기에 Private으로 작업을 하고 있었다.
아니나 다를까, 파일은 지워져서 확인이 안되었지만, 해당 파일을 올렸던 commit을 조회해보니, apikey가 노출이 되어있었다. 프로젝트 중간에 이 문제를 해결하기는 어려울것 같아 프로젝트 완성에만 신경을 썼고, 최종발표가 끝나고 약 2달이 지난 지금에서야 이 문제를 다시 해결하려했다.

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch 삭제하고자하는 file명' --prune-empty -- --all

이 명령어로 삭제 할 수 있다고 구글링을 통해 찾았기 때문에 여러번 시도해보았지만 먹히지 않았다. 아마 gir rm -r --cached로 이미 원격저장소의 파일을 지웠기 때문에 안되는것이 아닐까 예상해본다.(아닐수도 있다.)
그렇기 때문에 약간은 복잡하지만 BFG를 사용하도록 마음을 먹었다.
BFG 파일을 설치하고, 이런 복잡한 것 때문에 미루다 오늘에서야 설치를 했다.

BFG를 이용할 때에는 다음 링크의 방법을 따랐다.
https://www.lesstif.com/gitbook/bfg-repo-cleaner-git-repository-129007840.html

1). 설치

 curl -o bfg.jar -L https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar

2). repository clone

 git clone --mirror [github repository 주소]

3). 100M 이상의 큰 파일 정리

 java -jar bfg.jar --strip-blobs-bigger-than 100M [my-repos.git]

*나는 큰 파일이 없어서 그냥 이렇게 나왔다

4). 지우고 싶은 파일 정리

 java -jar bfg.jar --delete-files [apikey가 포함되어있는 파일명] [my-repos.git]

5). 저장소로 이동

cd [my-repos.git]

6). dirty data 삭제

 git reflog expire --expire=now --all 
 git gc --prune=now --aggressive

7). push!!

git push

8). GitHub 접속해서 확인하기!

두 눈을 의심했다. 작년에 많은 구글링을 통해 여러 명령어를 해보았지만 지워지지 않았던 그것이 해결되었기 때문이다. 일단 두고봐야겠지만, 어찌되었던 해결은 된 듯하다.

가장 중요한건
처음부터 잘 하자.(제발 ㅠ)
무조건 Push 하지 말고 GitIgnore이 잘 설정되었는지 확인 꼭 해보자!!

profile
코딩기딩기딩기딩

2개의 댓글

comment-user-thumbnail
2024년 2월 19일

정말 감사합니다.. 🥹👍

1개의 답글