728x90
git stash
git stash는 수정 내용을 임시 저장하는 명령어입니다.
main 브랜치로부터 my-branch를 만들어 이 브랜치로 전환해서 작업하고 있었다고 합시다. 작업 도중 main브랜치로 전환해야 할 일이 생겼습니다.
이때 변경사항을 커밋흐로 남기기에는 아직 진행중이라 애매한 상황이라면 임시 저장을 하는 git stash를 활용하면됩니다.
$ git stash
Saved working directory and index state WIP on my-branch: b014111 a 파일을 추가한다
만약 메시지를 남기고 싶다면 -m 을 활용하면 됩니다.
$ git stash -m "OOO 변경 사항..."
이제 main 브랜치로 전환할 수 있습니다.
$ git switch main
'main' 브랜치로 전환합니다
git stash list
이렇게 stash 한 내역은 다음처럼 git stash list로 확인할 수 있습니다.
$ git stash list
stash@{0}: WIP on tests-2: b014111 a 파일을 추가한다
git stash pop
main 브랜치에서 해야 할 일을 다 마치고 이제 다시 my-branch 로 돌아가 작업을 진행하고 싶습니다. 이때는 브랜치 이동 후 git stash pop 명령어로 아까 스택에 넣었던 작업 내역을 다시 불러오면 됩니다.
$ git switch my-branch
'my-branch' 브랜치로 전환합니다
$ git stash pop
현재 브랜치 my-branch
커밋하도록 정하지 않은 변경 사항:
(무엇을 커밋할지 바꾸려면 "git add <파일>..."을 사용하십시오)
(use "git restore <file>..." to discard changes in working directory)
수정함: a
커밋할 변경 사항을 추가하지 않았습니다 ("git add" 및/또는 "git commit -a"를
사용하십시오)
Dropped refs/stash@{0} (762134d031bbb57b72183e4001ac283b266d3953)
git stash apply
git stash pop과 비슷한 명령어로 git stash apply가 있습니다. 이 둘의 차이점은 스태시한 내역을 저장하는 스택 공간에서 내역을 제거하는지 여부입니다.
git stash pop의 경우 스택에서 작업 내역을 제거합니다. 따라서 git stash list로 해당 작업이 빠져있는 것을 확인할 수 있습니다.
반면 git stash apply의 경우 스택에서 작업 내역을 빼지 않습니다. 따라서 git stash list로 봐도 작업 내역이 그대로 남아 있습니다.
스택에 남아있기 때문에 다른 곳에서 넣어둔 작업내역을 재사용 가능합니다.
728x90
'Git' 카테고리의 다른 글
[amend commit & rebase] 이전에 쌓인 커밋들을 변경하고 싶어요. (0) | 2022.05.23 |
---|---|
[revert] 이전 커밋의 변경사항을 되돌리고 싶어요. (0) | 2022.05.22 |
[restore & reset] 변경사항, 커밋을 초기화하고 싶어요 (0) | 2022.05.20 |
[log & reflog] 이전 commit 내역들과 변경사항을 확인하고 싶어요 (0) | 2022.05.19 |
브랜치 (0) | 2022.05.18 |