[Git] Git 커밋 및 스테이징 문제 해결 가이드 (git rebase, git restore)

2025. 1. 26. 06:35코딩 도구/개발 도구 & 환경 (Dev Tools & Environment)

반응형

Git 커밋 및 스테이징 문제 해결 가이드 (git rebase, git restore)

개발을 하다 보면, 특정 파일만 커밋하고 싶은데 실수로 여러 파일이 함께 커밋되었거나, 원격 브랜치와 동기화 오류가 발생할 수 있습니다. 이런 상황을 효과적으로 해결하는 방법을 정리해 보았습니다.


상황 설명

문제:

  • 특정 파일 하나만 커밋하고 싶었으나, 여러 파일이 함께 스테이징되었음.
  • 이미 git add . 또는 git commit을 실행한 상태.
  • 원격 저장소에 아직 푸시하지 않은 상태이거나, 푸시 후 수정하고 싶은 경우.

해결책:

  • 불필요한 파일을 스테이징에서 제거하거나, 최근 커밋을 되돌리고 특정 파일만 커밋.

특정 파일만 커밋하는 방법

1. 특정 파일만 추가하고 커밋하기 (정상적인 상황)

# 특정 파일만 스테이징
git add chap05/src/sec01/exam01/StringEqualsExample.java

# 해당 파일만 커밋
git commit -m "feat: StringEqualsExample 파일 추가"

이 방식은 처음부터 특정 파일만 선택하고 커밋할 때 사용합니다.


2. 이미 여러 파일을 커밋한 경우 (최근 커밋 되돌리기 git reset)

이미 git add . 또는 git commit을 실행했지만 특정 파일만 커밋하고 싶을 때:

# 최근 커밋 취소 (파일들은 그대로 유지됨)
git reset HEAD~1

# 특정 파일만 다시 스테이징
git add chap05/src/sec01/exam01/StringEqualsExample.java

# 특정 파일만 커밋
git commit -m "feat: StringEqualsExample 파일만 커밋"

이 명령어는 최근 커밋을 취소하고, 특정 파일만 다시 커밋하는 방식입니다.


3. 이미 커밋 후 원격에 푸시하기 전 (git restore와 ``)

만약 이미 git pull --rebase 도중 문제를 해결하고 특정 파일만 커밋하고 싶다면:

# 스테이징 해제
git restore --staged .

# 특정 파일만 다시 추가
git add chap05/src/sec01/exam01/StringEqualsExample.java

# 특정 파일만 커밋
git commit -m "feat: StringEqualsExample 파일 추가"

이미 원격에 푸시한 경우 (강제로 덮어쓰기 ``)

만약 실수로 원격 저장소에 여러 파일을 푸시한 경우, 강제로 덮어쓰기가 필요할 수 있습니다. (⚠️ 주의: 협업 시 신중하게 사용해야 합니다)

# 최근 커밋 되돌리기
git reset HEAD~1

# 특정 파일만 스테이징
git add chap05/src/sec01/exam01/StringEqualsExample.java

# 커밋 진행
git commit -m "feat: StringEqualsExample 파일만 커밋"

# 강제로 원격 브랜치에 덮어쓰기
git push --force origin main

정리: 추천하는 안전한 순서

  1. git restore --staged . → 스테이징 해제
  2. git add [파일 경로] → 원하는 파일만 추가
  3. git commit -m "커밋 메시지" → 원하는 파일만 커밋
  4. git push origin main → 푸시 진행
반응형