GitHub에 이미 올린 파일 history에서 삭제하기

minin·2022년 4월 26일
6
post-thumbnail

프로젝트를 하면서 GoogleService-Info.plist 파일을 그대로 올려두었는데, 더이상 깃헙에 노출되지 않도록 숨겨보자! (+History에서도 삭제하기 ⭐️⭐️⭐️)

1. .gitignore에 추가하기

더이상 리모트 레파지토리에 올라가지 않았으면 하는 것을 .gitignore파일에 추가해준다. 나는 vim을 이용해서 수정을 하기 때문에...
vim .gitignore
GoogleService-Info.plist를 내부에 적어준다.


2. 변경사항 github에 반영하기

.gitignore를 적용하고 commit, push를 한 후, 현재 커밋에서 해당 파일이 사라졌는지 확인한다.

하지만 나의 경우엔...
🤔 깃헙에 이전에 올렸던 파일이 계속 건재함.

이렇게 .gitignore에 적어주었는데도! 현재의 커밋에서도 삭제하고자 하는 파일이 존재하는 이유는 캐시 때문이다. 캐시를 삭제해주도록 하자!

3. 캐시 삭제하기

git rm -r --cached .
위의 명령어를 입력하면 그간 쌓여있던 것들이 우다다다다다다ㅏ하고 삭제되었다고 뜬다. 그 후 다시 add, commit, push를 진행해 주면 된다.
git add .
git commit -m "rm cache"
git push origin main


4. History에서 지워주기

깃헙을 확인하면!
이제 깃에 올리고 싶지 않았던 파일이 사라진 것을 알 수 있다.

🙋하지만! History에는 그대로 노출되어 있어서 누구나 볼 수 있는 것은 똑같다.

git 로그에서도, 해당 파일을 말끔히 지워주기 위해서는..

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

나는 이게 실행이 자꾸 안돼서 고생을 좀 했는데, 파일경로만 제대로 입력해준다면... 어렵지 않을 것이다. 그러니까

파일경로를 잘 적자!


⭕️ ./GoogleService-Info.plist
→ 다음과 같이 다시 쓰여졌다고 뜬다.(성공)

❌ 이렇게하면 안됨 ❌
• 경로 완전 처음부터 /User~ 입력하면 다음과 같이 경로 밖이라는 오류 뜸.
.../Manbo/GoogleService-Info.plist' is outside repository at...

• 파일명만 GoogleService-Info.plist 냅다 입력하면 다음과 같이 브런치에 적용되지 않았다는 오류 뜸.
WARNING: Ref 'refs/heads/main' is unchanged, WARNING: Ref 'refs/remotes/origin/main' is unchanged, ...



5. 바뀐 내용을 github에 반영!

이제 끝이다. 바뀐 내용을 add, commit, push하면 됨. 여기에서 주의할 점은 push할 때 --force --all을 추가해 주는 것 뿐이다.

git add .
git commit -m "[Delete] GoogleService-Info.plist from history"
git push origin --force --all

이제 깃헙에 가서 과거의 커밋으로 돌아가도, 해당 파일이 사라지고 없는 것을 볼 수 있다! 끝🍫



🔖 참고

profile
🍫 iOS 🍫 Swift

2개의 댓글

comment-user-thumbnail
2023년 1월 18일

당신은 신이야

답글 달기
comment-user-thumbnail
2023년 9월 15일

와 이게되네요 굿!

답글 달기