Git을 사용할 때 커밋을 하지 않은 상태에서 master > branch 로는 이동이 가능하지만 branch > branch, branch > master로는 이동할 수가 없어서 Git사용이 익숙치 않은 상태에서는 불편함을 초래합니다.
그렇다고 브랜치 이동할때마다 커밋할수도 없고..
그래서 stash라는 것을 이용하면 현재 수정된 내역이 있는 소스를 임시저장소에 저장하고 다른브랜치로 이동할 수 있습니다.
stash는 기본적으로 Stack 구조이며 show, apply command를 이용하여 stash를 사용할 경우 제일 최근에 저장된 내역을 불러옵니다.
Save
git stash save로만 입력 할 경우 저장하는 stash의 ID값으로 저장하며, 저장할 이름을 입력 할 경우 특정한 이름으로 stash를 저장합니다
git stash save
git stash save {저장할 stash 이름}
List
git stash list를 입력하면 현재 저장된 stash의 리스트를 모두 볼 수 있습니다.
커맨드 입력 후에는 아래와 같은 방식으로 결과값이 나오며 stash@{순번} On {브랜치}: {Stash명/Stash ID}로 현재 저장된 stash를 보여줍니다
git stash list
stash@{0} : On temp/branch_1: stash_name_1
stash@{1} : On temp/branch_2: stash_name_2
stash@{2} : On temp/branch_3: stash_name_3
Show
저장된 stash의 저장정보와 어떤파일을 수정했는지 보여줍니다.
-- 제일 최근의 stash를 보여줍니다
git stash show
-- stash 순번에 해당하는 stash를 보여줍니다
git stash show stash@{순번}
Apply
저장된 stash정보(수정파일)을 적용합니다
-- 제일 최근의 stash를 적용합니다
git stash apply
-- stash 순번에 해당하는 stash를 적용합니다
git stash apply stash@{순번}
Clear
저장된 stash정보를 모두 삭제합니다.
git stash clear
Stash 트러블슈팅
Git의 stash를 이용하는중 PC의 캐시파일을 날리거나, 커맨드 작동중 잘못입력으로 인해 stash를 apply했는데도 에러문구가 뜨며 적용이 되지 않을 때가 있습니다. (저장된 stash파일을 날려야 할 수도 있음)
이럴때는 stash의 ID를 저장된 파일에서 따로 메모장으로 옮긴 다음, 문제를 해결한 후 stash apply {Stash ID}를 이용하면 저장된 stash를 날리지 않을 수 있습니다.
log상에 저장된 stash의 위치는 .git\logs\refs\stash 파일이며 stash파일을 메모장으로 열어보면 다음과 같이 stash정보가 있습니다.
00000000000000000000000000 498riu398ur93u49r8u3984ru9 Gildong Hong(홍길동) <mail@naver.com> .......브랜치, Stash명 등이 있음
498riu398ur93u49r8u3984ru9 ur983u9ruurujfu3r98u98r39r Gildong Hong(홍길동) <mail@naver.com> .......브랜치, Stash명 등이 있음
ur983u9ruurujfu3r98u98r39r hvksjk32jk3n4kk2n34kjn2k3n Gildong Hong(홍길동) <mail@naver.com> .......브랜치, Stash명 등이 있음
이름 앞에 있는 stash ID가 해당 stash정보이며 첫번째 stash정보를 가져오고 싶을 때는 아래와 같이 입력하면 stash를 불러올 수 있습니다.
git stash apply 498riu398ur93u49r8u3984ru9
'Git' 카테고리의 다른 글
Git - fetch를 이용한 원격분기 제어 (0) | 2021.10.19 |
---|---|
Git - Reset(커밋취소, 기록없애기) (0) | 2021.07.26 |
댓글