Github에서 다른 사람들에게 보여주고 싶지 않은 파일들이 있을 수 있다.
예를 들면 google-services.json (firebase의 푸시알림을 위한 데이터가 들어가 있어서 악용하려는 사람이 있다면 앱 사용자에게 악의적인 푸시알림을 보낼 가능성이 생긴다.) 또는 signing 관련 파일, 비밀번호가 저장된 파일이 그럴 수 있다.
remote 에 push가 되지 않으면 베스트이지만 push된 상황에서는 이렇게 하면 된다.
첫번째로 ".gitignore"로 해당 파일/폴더가 github에 푸시되지 않도록 한다. 이미 푸시한 상태라면 github의 history를 통해 관련 내역을 볼 수 있기 때문에 아래와 같이 깃헙에서 완전히 삭제하는것이 안전하다.
두번째로 filter-branch 를 이용하여 커밋내역을 삭제한다.
폴더위치가 포함된 파일이름을 정확히 작성해야 한다.
app -> src 폴더의 test.c 라는 파일이름을 삭제하고 싶으면 아래와 같이 하면 된다.
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch app/src/test.c' --prune-empty -- --all
현재까지 repo에서 커밋을 많이 했다면 그 양에 비례하여 시간이 걸린다.
이후 remote에 포스푸시 하면 된다.
로컬 브랜치가 여러개 있다면 자식 브랜치가 같이 적용되는것 같으니 커밋 그래프를 잘 보면서 하자.
커밋 그래프를 보면서, 변경할 브랜치로 체크아웃하고 원하는 커밋에 reset, force push 하면 된다.
참고한 사이트
https://donologue.tistory.com/373
https://stackoverflow.com/questions/53844405/github-pull-request-there-isnt-anything-to-compare
'Programming > Github' 카테고리의 다른 글
Android Studio / Intellij 에서 Github Repository 만들기 (2) | 2024.10.21 |
---|---|
Android + CI/CD 적용하기 - CD편 (feat.Github Actions) (0) | 2022.03.11 |
Android + CI/CD 적용하기 - CI편 (feat.Github Actions) (0) | 2022.03.09 |