개발 공부 & 정리

[Git] Git stash 정리 본문

개발/이것 저것

[Git] Git stash 정리

현뽀- 2020. 9. 29. 09:48

동기 : commit과정에서 modified 된 파일 중 의도치 않게 수정된 파일의 commit을 하고 싶지 않아서 modified file 리스트에서 제거하기 위해 git stash를 사용하였으나, 잘못 사용하여 commit 된 내용들이 삭제되고 git history가 꼬이게 됨.

  • 해결 방안 : git checkout (해당 파일의 경로와 파일명)을 해주면 해당 파일을 커밋하지 않고 작업 진행 가능

 

-> 따라서 git stash에 대해 학습하고자 함.

 

 

git stash란 ?

 

  • 아직 마무리하지 않은 작업을 스택에 잠시 저장하는 명령어. -> 아직 완료하지 않은 일을 commit 하지 않고, 나중에 꺼내와 마무리 가능.

 

  • git stash 명령을 사용하면 워킹 디렉터리에서 수정한 파일들 저장

  • 아래에 해당하는 파일들 보관

 

    • Modified file 이면서, Tracked 상태인 파일

 

      • Tracked 상태인 파일을 수정한 경우

      • Tracked란? 과거에 이미 commit 하여 스냅샷에 넣어진 관리 대상 상태의 파일

 

    • Staging Area에 있는 파일(Staged 상태의 파일)

 

      • git add 명령을 실행한 경우

 

      • Staged 상태로 만들려면 git add 명령을 실행해야 한다.

- git add라는 파일을 새로 추적할 때도 사용하고, 수정한 파일을 Staged상태로 만들 때도 사용한다.

 

$ git stash (git stash save)
새로운 stash를 만들어 하던 작업을 임시로 저장

$ git stash list
여러번 stash를 했을 경우 저장한 stash 목록 확인 가능

$ git stash apply
가장 최근의 stash를 가져와 적용한다.

$ git stash apply [stash 이름]
특정 이름의 stash를 가져와 적용한다.

$ git stash drop
스택에 남아있는 (가장 최근의) stash 제거

$ git stash drop [stash 이름]
특정이름의 stash 제거

$ git stash pop
적용과 동시에 제거 (apply + drop)

$ git stash show -p | git apply -R
가장 최근의 stash를 사용하여 패치를 만들고 그것을 거꾸로 적용한다.

 

 

출처

Comments