Git

[Github] GitHub 보안파일 커밋 내역 삭제하기

sian han 2022. 10. 4. 22:05

AWS 서버 보안 키가 들어있는 application.properties 를 github에 commit push 해버렸습니다

프로젝트 끝나기 전까지 repository 를 비공개로 해놔서 다행이지뭡니까

 

이거 유출되면 . . AWS 에서 전화오고 메일오고 강제 차단되고 과금폭탄 막을수도있담서요 .. 

내 서버로 코인 채굴당할뻔했습니다

 

파일은 호다닥 삭제를 했으나 커밋 히스토리에 떡하니 노출되어있으니 이것들을 삭제해보겠습니다

 

※ 주의 !! 

아래를 참고해서 커밋 내역을 삭제하기 전에,

커밋내역을 삭제 할 보안 파일을 전부 백업해두세요 !!! 

저는 깃허브 폴더 + 커밋내역만 지우고 싶었는데 로컬에 있던 파일까지 지워졌더라구요 .. 

푸쉬를 여러번했는데, 로컬에도 푸쉬를 해서 전부 삭제되었던것같아요 ㅠ ㅠ 

복구하느라 꽤 애먹었습니다

혹시 이런일이 발생할 수도 있으니 꼭 백업을 해놓고 시작하세욧

 

 

 

인텔리제이로 PUSH / PULL 만 해봤고

git bash 는 ssh 접속해서 배포할때만 사용해봤기때문에

github 레포지토리 접근부터 좀 헤매긴했습니다.

 

 

 

1. 먼저 github 레포지토리와 연결되어있는

    프로젝트 폴더를 로컬에서 찾아서 > 우클릭 > git bash here 을 누릅니다

 

2. filter-branch 를 이용하여 커밋내역을 삭제해줄건데요

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch {삭제할파일의 경로}' --prune-empty -- --all

위 명령어를 입력하시면 됩니다.

 

파일 경로는 인텔리제이에서 삭제할 파일 우클릭 > 경로/참조 복사 > 저장소 루트로부터의 경로 를 클릭하시면

자동으로 복사가 되는데 이걸 그대로 붙여넣기 해주시면됩니다

 

 

 

ERROR

you have uncommitted changes to your branch

you have unstaged changes

그리고 또 변경된 내용이 있다, 변경해야할 내용이 있다 등 이런 내용의 메세지가 뜨면

git bash 를 잠시 끄고 현재 프로젝트에서 모든 풀/푸쉬를 해서

커밋할 내용에 아무것도 안뜨게 깔끔하게 만들어주신 후 다시 진행해보세요.

 

저는 application.properties 포함해서 파일 두개 삭제했는데 20분 정도 걸린 것 같습니다

커밋 내용이 많을수록 시간이 오래걸리니 참고해주세요

 

3. 마지막으로 로컬브랜치를 원격 브랜치로 강제로 넣어줍니다

$ git push origin [브랜치 명] --force

 

이것까지 마치고 나서 레포지토리에 들어가봤는데요

 

 

커밋들이 3nn 개에서 2nn 으로 줄고

완전 초기 커밋메세지가 떠있어서 ... 아득했는데

폴더들어가 보니까 삭제한 파일 제외하고는 온전하더라구요 ! 

 

내잔디 .. !!!!!! 도 온전함 ㅎ

 

 

 

이제 레포지토리 public 으로 돌려놔도 되겠지요 ? 

조금 무섭지만 ..  ... 

'Git' 카테고리의 다른 글

[Git] GitHub Actions 자동 배포  (0) 2025.04.22
[git] git 명령어  (0) 2022.12.07
[Github] Error : unsafe repository owned by someone else  (0) 2022.11.28