git stash

stash

  • Git stash란?

    • 아직 마무리하지 않은 작업을 스택에 잠시 저장할 수 있도록 하는 명령어이다. 이를 통해 아직 완료하지 않은 일을 commit하지 않고 나중에 다시 꺼내와 마무리 할 수 있습니다.
    • 작업 도중 커밋을 할 수는 없는 상태지만, 브랜치 전환을 하거나 커밋 변경을 해야할때 임시적으로 저장할 수 있는 명령어 입니다.
  • EXAMPLE

    • stash

위 상황과 같이 Local repository에 아직 commit을 하지 않은 변경사항이 있을 경우
rebase, merge 혹은 pull로 당겨오게 되면 conflict(충돌)이 일어나서 오류가 나게 됩니다.
이러한 경우에 git stash를 사용하면 unstaged 상태인 변경사항을 일시적으로 백업하고 Working Directory를 깨끗한 상태로 유지합니다.

st1

git stash를 사용하면 워킹 디렉터리에서 수정한 파일들만 저장합니다.

stash : 워킹 디렉터리의 수정 파일들을 저장하는 장소

  • stash 대상
    • Modified이면서 Tracked 상태인 파일
      • Tracked 상태인 파일을 수정한 경우
      • Tracked: 과거에 이미 commit하여 스냅샷에 넣어진 관리 대상 상태의 파일
    • staging Area에 있는 파일(즉, git add를 실행한 경우)

stash 명령어

  • stash 목록 확인하기 : git stash list
  $ git stash list
  stash@{0}: WIP on master: 049d078 added the index file
  stash@{1}: WIP on master: c264051 Revert "added file_size"
  stash@{2}: WIP on master: 21d80a5 added number to log
  • git stash apply : stash 적용하기(작업 가져오기), 가장 최근에 저장한 stash 복원

  • git stash save : stash에 저장하기

    • git stash save 명칭 : 명칭을 주어 저장
  // git stash 옵션 없이 사용
  $ git stash
  Saved working directory and index state WIP on master: fbe5356 Well, I changed my mind about that renaming
  HEAD is now at fbe5356 Well, I changed my mind about that renaming
  • git stash show stash : 특정 stash의 자세한 내용 보기

  • git stash drop : stash 제거하기
    • git stash apply를 해도 스택에는 남아있기 때문에 위 명령어를 통해 제거해야 합니다.
    • git stash pop : git stash apply + git stash drop
  • git stash clear : stash 기록을 모두 제거

  • git stash show -p | git apply -R : stash 되돌리기
    • 실수로 잘못 적용한 경우에 위 명령으로 되돌릴 수 있습니다.
  // 가장 최근의 stash를 사용하여 패치를 만들고 그것을 거꾸로 적용한다.
  $ git stash show -p | git apply -R
  // stash 이름(ex. [email protected]{2})에 해당하는 stash를 이용하여 거꾸로 적용한다.
  $ git stash show -p [stash 이름] | git apply -R

참고

https://gmlwjd9405.github.io/2018/05/18/git-stash.html

https://blog.outsider.ne.kr/788