Post

[Git] 스태시(Stash)

Git Stash: 작업 중인 변경사항을 임시로 저장하기

코드 작업 중에 갑작스러운 변경 사항이나 다른 브랜치로 이동해야 하는 상황이 생기면 어떻게 해야 할까요? Git에서는 git stash 명령어를 사용하여 현재 작업 중인 변경 사항을 임시로 저장할 수 있습니다. 이번 글에서는 git stash 명령어를 활용한 다양한 시나리오와 명령어에 대해 알아보겠습니다.

기본 개념


git stash는 현재 작업 중인 변경 사항을 임시로 저장하는 명령어입니다. 이를 통해 다른 브랜치로 이동하거나 갑작스러운 작업을 처리할 수 있습니다. stash는 변경 사항을 스택(stack)에 저장하며, 여러 번의 stash를 만들어서 활용할 수 있습니다.

Stash 명령어

  1. Stash 생성하기: 현재 작업 중인 변경 사항을 stash에 저장합니다.

    1
    2
    
     git stash save "stash message"
        
    

    변경 사항을 stash에 저장할 때 메시지를 함께 기록할 수 있습니다.

  2. Stash 목록 확인하기: 저장된 stash 목록을 확인합니다.

    1
    2
    
     git stash list
        
    

    여러 번의 stash가 존재하는 경우 목록에서 확인할 수 있습니다.

  3. Stash 적용하기: stash에서 변경 사항을 현재 작업 디렉토리에 적용합니다.

    1
    2
    
     git stash apply stash@{n}
        
    

    stash@{n}은 적용할 stash의 인덱스를 나타냅니다.

  4. Stash 제거하기: stash에서 변경 사항을 적용한 후 해당 stash를 제거합니다.

    1
    2
    
     git stash drop stash@{n}
        
    

    적용한 stash를 제거할 때 사용합니다.

  5. Stash 적용 및 제거하기: stash에서 변경 사항을 적용하고 해당 stash를 제거합니다.

    1
    2
    
     git stash pop stash@{n}
        
    

    적용과 동시에 stash를 제거합니다.

  6. Stash 적용 시 Index 유지하기: stash에서 변경 사항을 적용하면서 Index(Staging Area)도 함께 유지합니다.

    1
    2
    
     git stash apply --index stash@{n}
        
    

    이 옵션을 사용하면 변경 사항 중 일부만 적용하고 나머지는 Staging Area에 유지할 수 있습니다.

실전 활용 예시


1. 다른 브랜치로 이동하기

1
2
3
4
5
6
7
8
9
# 현재 브랜치에서 변경사항 stash에 저장
git stash save "Switching to another branch"

# 다른 브랜치로 이동
git checkout feature-branch

# 변경사항을 적용
git stash apply stash@{0}

2. 갑작스러운 수정사항 처리하기

1
2
3
4
5
6
7
8
9
10
# 갑작스러운 수정사항을 처리해야 할 때
# 현재 브랜치에서 변경사항 stash에 저장
git stash save "Emergency fix"

# 수정사항 처리
# ...

# 변경사항을 적용
git stash apply stash@{0}

3. 다른 브랜치로 이동하면서 변경사항 적용

1
2
3
4
5
6
7
# 현재 브랜치에서 변경사항 stash에 저장
git stash save "Switching to another branch"

# 다른 브랜치로 이동하면서 변경사항 적용
git checkout -b new-feature-branch
git stash apply stash@{0}

4. Stash 적용 시 Index 유지하기

1
2
3
4
5
6
# 현재 브랜치에서 변경사항 stash에 저장
git stash save "Applying changes with index"

# 변경사항 중 일부만 Staging Area에 유지하면서 적용
git stash apply --index stash@{0}

📌주의사항


  • 변경사항 충돌 해결: stash에서 변경 사항을 적용할 때 충돌이 발생할 수 있습니다. 충돌이 발생하면 충돌을 해결하고 git addgit stash drop을 통해 진행합니다.
  • Stash 이름 지정: git stash save 명령어에서는 변경 사항에 대한 명시적인 메시지를 기록할 수 있습니다. 명시적인 메시지를 작성하면 나중에 어떤 작업을 했는지 쉽게 파악할 수 있습니다.
  • 다양한 옵션 사용: git stash 명령어에는 다양한 옵션들이 있습니다. 필요에 따라 -keep-index, -include-untracked, -patch 등의 옵션을 활용하여 stash를 더 세밀하게 관리할 수 있습니다.
This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.