Self-Study/기타

[Git] stash

Raadian 2022. 7. 4. 11:38

References

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

 

stash의 정의

다른 사람들과 형상 관리를 하면서 본인이 아직 마무리를 못한 작업이 있을 때, 이것을 특정 stack에 잠시 저장할 수 있도록 하는 기능이다.

이로 인해 마무리 못한 구현 내용을 commit하지 않고도 다른 소스 코드를 적용한 뒤 다시 stack에서 불러올 수 있다.

 

stash 과정

작업 중인 내용 임시 저장(stash)

git stash나 git stash save 명령어를 통해 작업 내용을 임시 저장한다.

$ git status

// working directory에 있는 파일의 상태 확인
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified:   index.html
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified:   lib/simplegit.rb

stash를 한 목록 확인하기

git stash list 명령어로 저장 중인 stash 목록을 확인할 수 있다.

$ git stash list

// stash한 목록들. 인덱스(번호)로 판별할 수 있다.
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

적용한 stash 중 원하는 작업 내용을 가져오기

git stash apply 명령어로 stash 한 것을 불러와 작업 내용에 반영한다.

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

// stash 이름(ex. stash@{2})에 해당하는 stash를 적용한다.
$ git stash apply [stash 이름]

// Staged 상태였던 파일들을 다시 Staged 상태로 불러오고 싶으면 다음처럼 작성한다.
$ git stash apply --index

stash 제거하기

git stash drop 명령어로 stash한 것을 제거한다.

// 가장 최근의 stash를 제거한다.
$ git stash drop

// stash 이름(ex. stash@{2})에 해당하는 stash를 제거한다.
$ git stash drop [stash 이름]

또한, git stash clear 명령어로 stash한 모든 것을 제거할 수 있다.

// 모든 stash를 제거한다.
$ git stash clear

stash 되돌리기

git stash show -p | git apply -R 명령어로 적용한 stash를 되돌린다.

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

// stash 이름(ex. stash@{2})에 해당하는 stash를 이용하여 거꾸로 적용한다.
$ git stash show -p [stash 이름] | git apply -R

alias를 이용한 stash 적용

stash-unapply 명령어로 stash에 별칭을 적용해 간편하게 이용할 수 있다.

$ git config --global alias.stash-unapply '!git stash show -p | git apply -R'
$ git stash apply
$ #... work work work

// alias로 등록한 stash 되돌리기 명령어
$ git stash-unapply