Git에 민감 정보가 올라간 경우 해당 커밋을 삭제하는 방법

실수로 API 같은 민감 정보가 올라간 경우, 혼자라면 조용히 해당 커밋을 삭제하면 되지만 협업을 하는 중이라면 관련된 사람들의 커밋도 모두 확인해야 한다. 계속해서 커밋 속에 해당 정보가 남아서 돌아다닐 수 있기 때문이다.

 

거기에 더해서 그럼 문제를 간과하고 다른 커밋들이 이어서 쌓인 경우 중간에 문제되는 부분을 잘라내듯이 처리해야 한다.

 

커밋이 1 - 2 - 3 - 4 - 5 - 6 - 7 로 진행해야하는데 3번 4번 5번이 문제가 된 경우를 예로 들 수 있다.

 

일단 깃 배쉬를 열어서 git log 부터 확인해야 한다.

 

HEAD로 표시된 것이 가장 최근 커밋이다. 가장 최근 커밋이 아닌 중간에 문제가 된 커밋을 날려야하기 때문에 commit 다음에 오는 커밋 아이디를 확인해줘야 한다.

 

git reset을 사용하는 방법도 있긴 하지만, rebase를 이용해보았다.

 

git rebase -i 해당커밋아이디

 

위 명령어를 입력하면 커밋 아이디 이후부터 현재(HEAD) 까지의 커밋 내역이 표시된 편집기가 뜬다.

 

pick 으로 표시된 커밋들을 확인한 뒤, drop을 사용해서 문제가 된 커밋들을 삭제해준다.

:wq 를 눌러 저장하고 나와서 다시 git log를 입력해주면 해당 커밋들이 삭제된 것을 확인할 수 있다.

 

수정된 사항을 반영하기 위해 git push origin <브랜치명> --force 을 입력하여 강제로 수정사항을 원격 저장소에 push해주면 문제가 되었던 커밋을 정리할 수 있다.

 

혼자서 작업하는 공간이라면 이런 작업이 크게 문제가 되지는 않지만 협업을 하는 중이라면 관련된 협업자들도 필요한 수정 작업을 진행해야하기 때문에 처음부터 커밋을 신중하게 하는 것이 중요하다.

'Co-work > GitHub' 카테고리의 다른 글

이클립스에서 생성한 프로젝트를 GitHub에 업로드하기  (0) 2023.08.26
stash  (0) 2023.08.07
commit message 수정  (0) 2023.07.30
upstream 관련 추가 정리  (0) 2023.07.29
Git 협업 _ Fork Workflow  (1) 2023.07.27