서론
깃허브를 사용할 때 누구나 한 번쯤 겪는 실수가 있다.
바로 올리면 안 되는 파일을 무심코 푸시(push)해버리는 것.
나도 티스토리 스킨을 개발하면서 .vscode/, .history/, 심지어 .DS_Store 같은 불필요한 파일까지 함께 올려버린 경험이 있다.
처음엔 별 생각 없이 넘어갔지만, 레포를 깔끔하게 관리하고 싶다는 생각이 점점 강해졌다.
특히 오픈소스나 스킨처럼 남들에게 공개하는 레포지토리라면 더욱 신경 써야 하는 부분이다.
이 포스트에서는 실수로 올라간 파일이나 폴더를 깔끔하게 제거하는 방법을 소개하고자 한다.
같은 실수를 반복하지 않기 위해 정리해두자!
본론
문제 상황
로컬에서 깃허브에 푸시를 했는데 이런 파일이 올라가버렸다.
- .vscode/ (IDE 설정 폴더)
- .history/ (파일 수정 이력 기록용 폴더)
- .DS_Store (macOS 시스템 파일)
이런 파일들은 프로젝트 실행에 필요 없고, 오히려 다른 사람에게 혼란을 줄 수 있다.
해결 방법
1. .gitignore에 추가하기
가장 먼저 해야 할 일은 .gitignore 파일에 무시할 대상을 추가하는 것이다.
.gitignore는 프로젝트 루트 디렉토리에 위치해야 하며, 커밋 이전에 설정하는 게 제일 좋다.
필요하면 GitHub에서 .gitignore 템플릿을 미리 참고해서 설정해도 좋다.
(예: GitHub/gitignore 레포지토리 참고)
예를 들어:
# .gitignore 파일에 추가
# IDE 설정
.vscode/
.idea/
.history/
# OS 특수 파일
.DS_Store
Thumbs.db
# 의존성/라이브러리
node_modules/
.env
이렇게 작성하면 앞으로 Git이 해당 파일들을 추적하지 않는다.
.gitignore 파일이 없다면 루트 경로에 새로 만든다.. 이미 있다면 맨 아래에 필요한 내용을 추가해주면 된다.
2. Git의 캐시에서 이미 추적 중인 파일 제거하기
하지만 문제는,
이미 푸시해서 올라간 파일들은 .gitignore만 추가한다고 사라지지 않는다!
그래서 다음 명령어로 Git 트래킹을 해제해야 한다:
git rm --cached -r .vscode .history .DS_Store
- -cached 옵션: 로컬에는 파일을 남기고, Git 관리만 끊는 명령어다.
- r 옵션: 폴더 안의 파일들까지 재귀적으로 처리한다.
3. 변경 사항 커밋 & 푸시하기
- 트래킹 해제를 했다면 변경사항을 커밋하고 다시 푸시해야 한다:
- 아래 명령어를 실행하면 깃허브에서도 해당 파일들이 사라진다.
git commit -m "🔥 Remove unwanted folders (.vscode, .history) from repo"
git push origin main
커밋 메시지에 “🔥” 같은 이모지를 넣으면 시각적으로도 한눈에 보이니 좋다!
한 번에 정리하는 명령어 정리(.gitignore 터미널로 무시할파일 추가하기)
# 무시할 파일 추가
echo -e ".vscode/\\n.history/\\n.DS_Store" >> .gitignore
# git 트래킹 해제
git rm --cached -r .vscode .history .DS_Store
# 커밋 및 푸시
git commit -m "Clean up unnecessary files"
git push origin main
추가로 .gitignore에 무시 설정을 했는데도 Git이 계속 파일을 트래킹하려고 할 때는?
git rm -r --cached .
git add .
git commit -m "♻️ Reset tracked files after .gitignore update"
이렇게 전체 캐시를 초기화해주면 .gitignore가 다시 적용된다.
마무리하며
처음엔 이런 실수가 민망하고 당황스러울 수 있다.
하지만 누구나 겪는 일이니까 너무 스트레스 받지 말자.
오히려 한 번 겪고 나면 레포지토리 관리 능력이 한 단계 성장하게 되는 거겠지.
사실 매번 격는 실수라서 결국 포스팅 하게됬다.
익숙할때까지 Git 관리에 대해 더 많이 배우고 학습해야 될거 같다.
정리하자면:
- 실수했더라도 걱정하지 말고 .gitignore를 수정하고,
- git rm --cached로 트래킹을 끊고,
- 커밋 후 푸시하면 깔끔하게 해결된다!
이 과정을 경험해본 나는 이제 진정한 깃 사용자다.
'Dev > ETC. Dev' 카테고리의 다른 글
GitHub SSH 연결하기 (for Mac) (2) | 2025.04.27 |
---|---|
RESTful API 설계가 답일까? 기능 중심 URL로 바꾸기까지의 기록 (0) | 2025.04.13 |
UUID 버전별 차이와 사용법 정리 (0) | 2025.04.09 |
[DB] UUID를 사용한 고유한 ID 시스템의 장점과 적용 방법 (0) | 2025.03.23 |
[Database] 고유키(Unique Key)와 주키(Primary Key)의 차이 (0) | 2025.03.15 |