Stash
감추다 숨겨두다라는 의미.
branch를 가지고 작업 중 해당 branch에서 작업이 끝나지 않을때 다른 branch로 Checkout하여 작업을 하려고하는데 commit을 하지 않고 옮겨갈 수가 없다. 이때 stash를 이용하여 branch를 숨겨 놓고 작업이 가능하다.
- 현재 코드를 Commit을 하고 가는게 가장 심플하고 안전한 방법이지만 불완전한 코드를 Commit하여 log가 쌓이고, 하나의 이슈에 하나의 commit log를 보통 쌓는다.
- git stash를 이용하여 현재 코드를 안전하게 임시 저장. stash가 branch별로 저장되기 떄문에 임시 저장 기능이라고 한다.
branch를 활발하게 이용하지 않는다면 의미가 없는 기능이다.
사례
- 새로운 작업을 위해 exp branch를 생성 후 f3.txt라는 파일을 생성하여 작업 중이었는데 다시 master 또는 새로운 branch를 만들어 exp branch 작업보다 우선 진행해야 되는 경우가 발생하였다.
MCR007@MCR007 MINGW64 /d/gittest2 (exp)
$ vim f1.txt
MCR007@MCR007 MINGW64 /d/gittest2 (exp)
$ git checkout master
Switched to branch 'master'
M f1.txt // 현재 파일이 수정중에 있었다고 표시 됨.
- 수정 사항을 그대로 두고 가기도 그렇고 Commit을 하기에도 좋지가 않은 상황.
MCR007@MCR007 MINGW64 /d/gittest2 (exp)
$ git status
On branch exp
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: f1.txt
no changes added to commit (use "git add" and/or "git commit -a")
MCR007@MCR007 MINGW64 /d/gittest2 (exp)
$ git stash
Saved working directory and index state WIP on exp: 9e9729b Merge branch 'exp'
MCR007@MCR007 MINGW64 /d/gittest2 (exp)
$ git checkout master
Switched to branch 'master'
MCR007@MCR007 MINGW64 /d/gittest2 (master)
$ git checkout exp
Switched to branch 'exp'
MCR007@MCR007 MINGW64 /d/gittest2 (exp)
$ git status
On branch exp
nothing to commit, working tree clean
MCR007@MCR007 MINGW64 /d/gittest2 (exp)
$ git stash pop // 해당 임시 저장을 Load 해옴.
On branch exp
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: f1.txt
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (f47bf6326bf09a394a8bfa68900eb9873eaad47b)
'STUDY > Git' 카테고리의 다른 글
Git_협업 (0) | 2018.09.12 |
---|---|
Git_Remote (0) | 2018.09.11 |
Git Branch (0) | 2018.08.22 |
Git 기초, Git이란? (0) | 2018.08.22 |