git staging area에 있는 변경 사항만 stash 하기

@ZungTa · 2025-05-20 화요일 · 2 min read

개발을 하다 보면 일부 내용만 stash 해야 될 필요가 있다.

나 같은 경우는 일부 내용을 빼서 잠깐 테스트해 볼 건데, 어차피 다시 적용할 내용이라 rollback 했다가 다시 작성하기에는 귀찮을 때 사용한다.

그럴 경우 그 일부 내용만 staging area에 올려서 stash를 하면 된다.

그 방법에 대해서 알아보겠다.

명령어

모든 변경 사항 stash

git stash push

메시지 붙여서 stash

git stash push -m "test"

staging area에 있는 변경 사항만 stash

git stash push --staged

Git version이 2.35 미만일 경우

--staged 옵션을 사용할 수 없다.

-k 옵션을 이용해서 조금 복잡하지만 수행할 수 있다.

  1. 모든 변경 사항 stash하면서 staged change는 working tree에 남기기

    git stash push -k
    # -k 또는 --keep-index
  2. 남은 변경 사항 stash (staging area만 stash 됨)

    git stash push
  3. 원래 stash 했던 것 stash pop

    1. 가장 최근 stash 한 것이 0번으로 가기 때문에 순서 상 1을 pop 하면 된다. 하지만 혹시 모르기 때문에 git stash list로 해당 stash의 번호를 확인해본 후 pop 하는 것이 좋다.
    git stash pop 1
  4. 이제 stash 하기 전 상태의 working tree가 되었다. 여기서 필요 없는 부분(staged 부분)을 제거하면 된다.

References

@ZungTa
I'm a backend developer
© ZungTa Devlog, Built with Gatsby