본문 바로가기

과거공부모음

20230307 TIL - github에 민감한 파일 올렸다

Today I learned

오늘은 작업을 하다가 api 시크릿 키들이 있는 민감한 파일을 푸쉬해버렸다 아찔하다 민감한 파일을 푸쉬를 하다니 이 경우 커밋에 있는 파일을 삭제할 수 있는지 찾아봤다

첫 번째로 .gitignore에 민간함 파일을 까먹지 말고 넣어두자 .gitignore에 적는다고 해서 올라간 파일이 사라지지 않는다 첫 번째로 적어둔 이유는 다시 실수 하지 말자는 생각에 먼저 작업한다

두 번째로 캐시를 모두 지워주고 다시 커밋해야한다고 한다

git rm --cached 민간한 파일명

 

파일을 삭제한다고 commit내용이 사라지지 않는다 기록을 찾아본다면 충분히 민간함 파일을 읽을 수 있다 더 완벽하게 제거해야한다

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch <경로/.../파일명.확장자>' --prune-empty --tag-name-filter cat -- --all

 

이런식으로 git 명령어를 입력하면 모든 커밋을 확인하면서 파일을 제거한다 제거가 다 진행이 된다면 강제로 push를 해줘야한다

git push --force

파일이 제거된 커밋들이 push가 된다!!

 

하지만 여기서 문제가 발생했다 파일을 제거하는 부분에서는 아주 만족스러웠지만 commit들이 새로운 커밋이 되어버려서 문제였다 충돌이 여러곳에서 발생했다

다른 방법을 찾아봐야했다

 

이미 내가 작업하던 브랜치는 새로운 commit들로 넘쳐난다 github에서 dev를 새로 받아와서 새로운 작업 브랜치를 만들었다 그리고 새로운 브랜치에서 작업하던 브랜치에서 민감한 파일을 올려버린 commit만 빼고 내가 작업하던 commit들을 골라와서 붙여서 넣으면 된다 x브랜치에서 y브랜치의 commit을 가져오자

// 브랜치 x
git cherry-pick <y브랜치의 commit번호>

이 명령어로 하나하나 원하는 커밋만 가져와서 붙여넣고 다시 push를 하려고 했는데 이미 내가 강제로 푸쉬해둔 commit들 때문에 push가 막혔다 그래서 이번 push도 강제로 푸쉬를 진행한다

 

잠깐의 실수로 너무 힘들었다 git add를 할 때 필요없는 파일인지 제외해야 하는 파일은 아닌지 꼭 체크를 하고 .gitignore에 까먹지 말고 적어두자!!

 

 

 

오늘 배운 점은 위에서 새로운 commit들이 만들어지면서 특정 파일을 제거하는 행동은 이미 작업을 다 진행하고 추후 제거해야하는 파일이 있다면 팀원들과 합의하고 진행한 후 다시 작업 환경을 구성하고 진행해야하는 부분인거 같다 나는 PR중이라 비교적 혼자만 고생하면 되었다!