Search

깃허브 히스토리에 민감한 정보가 올라갔을 때 지우는 법

생성일
2023/02/09

문제 원인

깃허브 저장소에 DB 비밀번호 값을 올리는 대형 사고를 쳐버렸다.
별생각 없이 다시 로컬에서 해당 파일을 지우거나 수정 후 다시 commit 한 뒤
remote origin에 push 해도 히스토리상에 해당 정보가 남게 된다.

해결 방안

원본 레포지토리 클론(clone)

git clone --mirror [레포지토리 주소] cd [레포지토리 폴더명]
Shell
복사

BFG Repo-Cleaner 다운로드

다운로드한 jar파일을 작업할 프로젝트의 로컬 최상위 경로에 저장

문제의 히스토리 파악

‘database.py’ 라는 파일 안에 password 값이 그대로 노출되어 있었기에 이 히스토리를 지워주어야 했다.

히스토리 삭제

BFG Repo-Cleaner 을 이용해서 문제의 히스토리 삭제
java -jar [jar파일 경로] --delete-files [지울 파일 이름] git reflog expire --expire=now --all && git gc --prune=now --aggressive git push -f origin main
Shell
복사
다음과 같이 뜨면 성공
깃허브 히스토리에서 문제의 히스토리 기록이 지워졌는지 확인

번외: 삭제 이후 깃이 꼬였을 때 해결 방법

혹시라도 원격 저장소와 로컬 저장소가 꼬였다면 다음 명령어 입력
단, local의 파일들은 모두 날라가도 문제없는 상황에서 “나는 그저 원격 git 저장소의 master를 내 local로 덮어 씌우고 싶다.” 하는 상황에서만 사용!!!
git fetch --all git reset --hard origin/master git pull origin master
Shell
복사

참고 자료