프로젝트를 하면서 GoogleService-Info.plist
파일을 그대로 올려두었는데, 더이상 깃헙에 노출되지 않도록 숨겨보자! (+History에서도 삭제하기 ⭐️⭐️⭐️)
.gitignore
에 추가하기더이상 리모트 레파지토리에 올라가지 않았으면 하는 것을 .gitignore파일에 추가해준다. 나는 vim을 이용해서 수정을 하기 때문에...
• vim .gitignore
→ GoogleService-Info.plist
를 내부에 적어준다.
.gitignore를 적용하고 commit
, push
를 한 후, 현재 커밋에서 해당 파일이 사라졌는지 확인한다.
하지만 나의 경우엔...
🤔 깃헙에 이전에 올렸던 파일이 계속 건재함.
이렇게 .gitignore
에 적어주었는데도! 현재의 커밋에서도 삭제하고자 하는 파일이 존재하는 이유는 캐시 때문이다. 캐시를 삭제해주도록 하자!
• git rm -r --cached .
위의 명령어를 입력하면 그간 쌓여있던 것들이 우다다다다다다ㅏ하고 삭제되었다고 뜬다. 그 후 다시 add
, commit
, push
를 진행해 주면 된다.
• git add .
• git commit -m "rm cache"
• git push origin main
깃헙을 확인하면!
이제 깃에 올리고 싶지 않았던 파일이 사라진 것을 알 수 있다.
🙋하지만! 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
, ...
이제 끝이다. 바뀐 내용을 add
, commit
, push
하면 됨. 여기에서 주의할 점은 push
할 때 --force --all
을 추가해 주는 것 뿐이다.
• git add .
• git commit -m "[Delete] GoogleService-Info.plist from history"
• git push origin --force --all
이제 깃헙에 가서 과거의 커밋으로 돌아가도, 해당 파일이 사라지고 없는 것을 볼 수 있다! 끝🍫
🔖 참고
당신은 신이야