본문 바로가기

카테고리 없음

[GiHub] 이미 Push한 파일 gitIgnore으로 숨기기

👩‍💻 오늘의 할 일

프로젝트를 하던 중 아무 생각 없이 모든 파일을 Push해서 google-service.json 파일까지 모두 올라가 버렸습니다. 민감한 정보가 올라가 있는 파일들은 Public으로 공개될 경우 무시 무시한 결과를 초래할 수 있어 .gitignore에 등록하여 업로드 되지 않도록 설정해야 합니다. 오늘은 이미 Repository에 Public으로 올라가 있는 파일을 gitignore를 통해 숨기는 방법을 알아보겠습니다.

📜 . gitignore 파일 수정하기

먼저 gitignore 에 숨길 파일들을 지정해줍니다.

# Android Studio Navigation editor temp files
.navigation/

# Android Studio captures folder
captures/

# IntelliJ
*.iml
.idea/*
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
# Android Studio 3 in .gitignore file.
.idea/caches
.idea/modules.xml
# Comment next line if keeping position of elements in Navigation Editor is relevant for you
.idea/navEditor.xml

# Keystore files
# Uncomment the following lines if you do not want to check your keystore files in.
#*.jks
#*.keystore

# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild
.cxx/

# Google Services (e.g. APIs or Firebase)
google-services.json

# Freeline
freeline.py
freeline/
freeline_project_description.json

# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md

# Version control
vcs.xml

# lint
lint/intermediates/
lint/generated/
lint/outputs/
lint/tmp/
# lint/reports/

*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
local.properties

그 후, main Branch에 commit -> push 합니다.

git add .
git commit -m "gitignore modify"
git push origin [메인 브렌치]

 

하지만 여전히 Repository를 확인해봐도 여전히 .gitignore 파일에 등록한 파일들이 올라가 있습니다.

.gitignore에 등록했는데 왜 커밋목록에 올라오는거지?🤔

원인은 .gitignore에 파일을 추가하기 전에 stage에 올라간 파일들은 캐시가 남아 있어 Repository에 계속해서 존재합니다.

 

그래서 캐시를 제거해줘야 하는데, 캐시 제거를 위해 Main branch로 이동 후 다음 명령어를 입력하면 됩니다.

// 캐시를 모두 삭제
git rm -r --cached .
 
// .gitignore에 입력된 파일 목록을 제외한 다른 모든 파일을 다시 트래킹
git add .
 
// 커밋
git commit -m "clear git cache"

🚨 주의 사항

여기까지 한다면 Main Branch에 있는 google-service.json 파일이 제거된 것을 확인할 수 있습니다.

주의할 점이 한가지 있는데 만약 Feature 같은 다른 브랜치가 존재한다면 다른 브랜치에서 모두 merge를 해줘야 제거할 수 있습니다.

git switch [작업 브랜치]
git merge [메인 브랜치]