본문 바로가기
git

[git] stash를 사용하여 수정 내역 스택에 저장하기

by Junk_Seo 2023. 11. 14.
반응형

1. Git stash

  • 아직 마무리 하지 않은 작업을 스택에 잠시 저장할 수 있도록 하는 명령입니다.
  • 브랜치에서 작업을 진행하던 중 아직 완료하지 않은 작업을 commit 하지 않고 다른 작업을 진행하는데 용이합니다.

    1.1. 작업 임시 저장

    • "git stash" or "git stash save"
    • 위 명령어를 통해 새로운 stash를 스택에 만들어 하던 작업을 임시로 저장합니다.
      git stash save

    1.2. stash 목록 확인

    • "git stash list"
    • 위 명령어를 사용하면 stash 하여 스택에 저장된 리스트를 확인할 수 있습니다.
      git stash list

    1.3. stash 가져오기

    • "git stash apply [stash 이름]"
    • 위 명령으로 스택에 저장된 stash 내용을 다시 가져온다.
    • 가져온 stash는 리스트에 유지된다.
      git stash apply

    1.4. stash 삭제

    • "git stash drop [stash 이름]"
    • apply 옵션으로 stash를 가져와서 적용해도 스택에는 여전히 남아 있다. 스택에 남아 있는 stash는 위 명령으로 제거할 수 있다.
      git stash drop

    1.5. stash pop

    • "git stash pop [stash 이름]"
    • 스택에서 stash를 가져와 적용하고 동시에 제거를 하고 싶으면 위 명령어를 사용합니다.
      git stash pop

    1.6. stash 특정 파일만 임시 저장

    • "git stash push -m "내용" [경로]"
    • 특정 파일 또는 특정 경로에 있는 수정된 파일만 stash에 저장된다. 
      git stash push -m

2. 활용법

    2.1. 동일 브랜치에서 다른 개발자가 commit한 내용이 내가 commit할 내용과 충돌이 나는 경우

    • 예시) 내가 commit할 내용을 stash하여 스택에 저장한 후 원격 브랜치에서 fetch/pull 하여 적용한 뒤 stash에 저장한 내용을 가져와서 작업 후 다시 commit 한다.
      • git stash
      • git pull origin feature_1
      • git stash pop
      • 추가 작업 후 commit

    2.2. 현재 브랜치의 작업 중인 내용을 다른 브랜치로 옮기고 싶은 경우

    • 예시) feature_1 브랜치에서 작업 중인 내용을 feature_2 브랜치로 옮기고 싶은 경우
      • git stash save # 현재 브랜치 : feature_1
      • git stash list
      • git checkout feature_2
      • git stash apply

    2.3. feature 브랜치에서 작업하던 중 master 브랜치의 내용이 변경되어 해당 내용을 feature 브랜치에 적용해야 하는 경우

    • 예시) feature_1 브랜치에서 master 브랜치의 내용을 fetch/pull 해야 하는 경우
      • git stash save # 현재 브랜치 : feature_1
      • git stash list #stash 스택 목록 확인
      • git fetch origin master
      • git pull origin master
      • git stash apply
반응형