Git

[Git] Git에서 특정 파일만 무시하거나 되돌리는 전략 정리

clolee 2025. 5. 21. 20:07

✅ Git에서 특정 파일만 무시하거나 되돌리는 실무 전략 정리

🔎 목적

  • Git에 이미 올라간 파일을 로컬 변경 없이 그대로 다시 덮어쓰기
  • 특정 파일은 로컬에서 계속 수정하되 Git에선 무시하도록 처리
  • Git이 추적하지 않아도 되는 새로운 파일/디렉토리를 무시하도록 설정

✅ 1. 변경된 파일을 Git에 올라간 상태로 덮어쓰기

Git이 추적 중인 파일을 마지막 커밋 상태로 복원 (로컬 수정 삭제)

▶️ 명령어:

git restore <파일경로>

📂 예시:

git restore src/components/Header.js

💡 설명:

  • git status에 modified로 뜨는 파일을 제거 (수정 내용 삭제)
  • 로컬에서 실수로 수정한 파일을 원상복구
  • 주의: 되돌린 변경사항은 복구 불가 (백업 먼저!)

✅ 2. 로컬에서만 수정하고 Git에선 무시하게 하기

Git이 추적 중인 파일을 로컬에서만 수정하고, git status에도 안 뜨게

▶️ 명령어:

git update-index --assume-unchanged <파일경로>

📂 예시:

git update-index --assume-unchanged config/apiConfig.js

🔁 다시 추적하게 하려면:

git update-index --no-assume-unchanged config/apiConfig.js

💡 설명:

  • 팀에서 공유하는 설정 파일을 내 PC에서만 다르게 쓰고 싶을 때
  • 예: API 주소, 테스트 계정 등 변경 시
  • Git에는 변경사항 올라가지 않음

✅ 3. 새로 만든 파일/폴더 무시하기

Git이 전혀 모르고 있었던 파일들 (Untracked)을 무시하도록 설정

3-1. .gitignore로 무시 (공유됨)

# .gitignore 예시
data/nodeWeb-example/
*.log
.env
  • .gitignore은 커밋되므로 다른 팀원도 무시
  • 보통 팀 프로젝트에서 공통으로 무시할 파일 등록

3-2. .git/info/exclude로 무시 (로컬 전용)

echo "data/nodeWeb-example/" >> .git/info/exclude
  • 내 로컬에서만 무시
  • 팀에는 영향 없음
  • 커밋되지 않음

📊 전략별 비교 요약표

상황 명령어 추적 여부 로컬 변경 유지 팀에 공유됨?
Git에 올라간 파일 덮어쓰기 git restore <파일> ✅ O ❌ 삭제됨 ✅ 예
Git에 올라간 파일 무시 --assume-unchanged ✅ O ✅ 유지 ❌ 아니오
새 파일/폴더 무시 (공통) .gitignore ✅ 유지 ✅ 예
새 파일/폴더 무시 (로컬) .git/info/exclude ✅ 유지 ❌ 아니오

📌 마무리 팁

  • 자주 쓰는 설정 파일(API, 비밀번호 등)은 .env.local, local-config.js처럼 로컬용 파일을 따로 두고 .gitignore로 무시하는 구조로 관리하는 것이 이상적입니다.
  • 무심코 git add 하기 전에 항상 git status 확인하세요!