Git Stash 사용 시 충돌 해결 방법

oversleep·2025년 2월 15일
0

git

목록 보기
3/11
post-thumbnail

1. Git Stash란?

Git에서 git stash 명령어는 현재 변경 사항을 임시 저장하고, 작업 디렉토리를 깨끗한 상태로 되돌리는 기능입니다.
이는 아직 완료되지 않은 작업을 저장하고, 다른 작업을 먼저 해야 할 때 유용합니다.

# 현재 변경 사항을 stash에 저장
git stash

Stash에 저장된 변경 사항은 언제든 다시 적용할 수 있습니다.

# 저장된 stash를 다시 적용
git stash pop

하지만 git stash pop을 실행하면 충돌(conflict)이 발생할 수 있습니다.
이 글에서는 Git Stash 사용 중 발생하는 충돌을 해결하는 방법을 알아보겠습니다.


2. git stash pop vs git stash apply

🔹 git stash pop

  • Stash를 적용하면서 삭제
  • 충돌 발생 시 stash를 복원할 수 없음
  • 충돌이 나면 stash가 사라져서 복구하기 어려울 수 있음
git stash pop

🔹 git stash apply

  • Stash를 적용하지만 삭제하지 않음
  • 충돌 발생 시 stash를 유지할 수 있어 복구가 가능함
git stash apply

안전한 방식: 먼저 git stash apply를 사용하여 충돌이 있는지 확인한 후, 문제가 없으면 git stash drop으로 삭제하는 것이 좋습니다.

git stash apply
# 충돌 없으면
git stash drop

3. git stash pop 후 충돌 해결 방법

1️⃣ git stash pop 실행 후 충돌 발생 확인

git stash pop

만약 충돌이 발생하면 Git에서 아래와 같은 메시지를 출력합니다.

CONFLICT (content): Merge conflict in file.txt

이럴 때 git status를 사용하여 충돌이 난 파일을 확인합니다.

git status

2️⃣ 충돌 해결하기

  1. 충돌이 발생한 파일을 열고, <<<<<<< HEAD 부분을 찾아 수정합니다.
  2. 필요 없는 충돌 마커(<<<<<<<, =======, >>>>>>>)를 제거하고 원하는 코드로 정리합니다.
  3. 수정이 끝나면 변경 사항을 스테이징합니다.
git add .
git commit -m "Resolve stash conflict"

4. 충돌이 심해서 되돌리고 싶다면?

만약 충돌이 너무 많거나 stash pop이 잘못 적용되었다면 다음 방법을 사용할 수 있습니다.

🔹 변경 사항을 되돌리는 방법

git reset --hard HEAD

이 명령어를 실행하면 현재 변경사항이 모두 삭제되고, 마지막 커밋 상태로 되돌아갑니다. (주의해서 사용하세요!)


5. 정리

명령어설명
git stash변경 사항을 임시 저장
git stash popStash 적용 + 삭제 (충돌 시 복구 어려움)
git stash applyStash 적용 (삭제 X, 충돌 시 복구 가능)
git stash drop적용된 stash를 삭제
git reset --hard HEAD현재 변경 사항을 모두 삭제 후 마지막 커밋으로 되돌리기

✅ 충돌을 피하려면?

  1. git stash apply를 먼저 사용하여 충돌이 있는지 확인
  2. 충돌이 없다면 git stash drop으로 stash 삭제
  3. 충돌이 발생하면 git status를 확인하고 직접 해결

🔥 Stash를 사용할 때는 apply를 먼저 시도하는 것이 가장 안전합니다!

profile
궁금한 것, 했던 것, 시행착오 그리고 기억하고 싶은 것들을 기록합니다.

0개의 댓글