실수로 API 키 같은 시크릿을 push해버렸다. 어차피 private repository이고 나 혼자 개발하는 repo이니 크게 상관은 없지만, 프로젝트 초반이기도하고 찝찝하기도 하니 이력을 전부 날리는게 좋다고 생각했다. 키를 재발급 받는 것이 베스트지만 아래와 같이 main 브랜치를 날려버리고 secret을 수정한 현재 버전으로 강제 push하는 방법을 사용할 수도 있다.
-
git checkout --orphan clean-start
부모 이력을 승계받지 않는 완전히 새로운 브랜치를 만든다. --orphan 옵션으로 부모 커밋이 없는 브랜치를 만들 수 있다. 일반 브랜치 생성과 달리 기존 history와 완전히 단절된 새 브랜치이고, 파일들은 그대로 working directory에 남아있고 전부 “새 파일(untracked)” 상태가 된다.
-
git add -A
현재 working directory의 모든 파일을 스테이징한다. secret은 일단 .env 에 넣어두었는데, .gitignore 에 등록된 .env는 제외된다.
-
git commit -m "Initial commit"
첫 번째 커밋을 만든다.
-
git branch -D main
기존 main 브랜치를 강제 삭제한다. -d 는 merge 여부를 확인하지만 -D 는 확인 없이 삭제한다. 현재 clean-start 브랜치에 있으므로 삭제가 가능하다.
-
git branch -m main
현재 브랜치(clean-start)의 이름을 main으로 변경한다.
-
git push -f origin main
-f(force)로 원격의 main을 강제로 덮어쓴다. 일반 push는 원격보다 history가 뒤처지면 거부되는데, 여기서는 완전히 다른 history이므로 -f 없이는 push가 불가능하다.