본문 바로가기
Development/Git

[Git] git stash 사용해서 하던 작업 저장하고 다시 꺼내기

by 대범하게 2023. 7. 25.
반응형

목차
1. git stash로 임시 저장하기
2. git stash list로 저장된 내용 확인하기
3. git stash apply로 저장된 내용 불러오기

💡git stash 사용해서 하던 작업 저장하고 다시 꺼내기 💡

VS code에서 작업하고 있던 브랜치가 아닌 다른 브랜치에서 작업해야하는 경우가 있다.

현재 작업하고 있던 브랜치에서 변경된 내용을 커밋하기엔 애매하고, 다른 곳에 복사해두기엔 변경 내용이 많은 경우 곤란하다.

(*커밋하기 애매한 이유: "커밋"이라는 과정은 문제없이 작동하는 코드에 대해서만 진행)

 

이 경우 로컬 저장소에서 임시로 저장할 수 있는 명령어가 바로 git stash이다. 

 

1. git stash로 임시 저장하기

git stash를 사용하여 저장하면, 스택(Stack) 형식으로 저장된다. 

아래 명령어를 통해, 로컬 저장소 목록에 변경 사항을 임시 저장한다고 생각하면 된다. 

git stash # 임시 저장하기

git stash는 Git으로 버전 관리를 하고 있는 파일들에 수정 내용을 임시로 저장하기 때문에, 새롭게 생성된 파일을 저장되지 않는다. 새롭게 생성된 파일도 함께 임시저장하고 싶다면, git add로 새롭게 생성된 파일들을 Git으로 관리하도록 한 후, git stash를 통해 저장해야 한다. (상 일부 파일은 임시 저장이 왜 안 되지라고 생각했었는데 새롭게 생성된 파일으로 Git이 버전관리를 하지 않았기 때문이었다!)

git add .		
git stash

 

2. git stash list 로 저장된 내용 확인하기

git stash를 사용하여 저장하면, 스택(Stack) 형식으로 수정 사항이 저장된다. 

즉, 가장 최근의 stash 된(임시 저장된 변경 사항) 친구들이 계속 상위에 쌓인게 된다. 

git stash list
# stash@{0}: WIP on main: 79fb440 Merge branch 'develop' into main
stash@{<stash_number>}: <stash_message>

 

3. git stash로 저장된 내용 불러오기

git stash를 처음 사용했을 때, git stash는 스택(Stack) 형식으로 저장되는 것을 알고 있었다면 헷갈리지 않았을 문제였을 때지만, git stash로 다수의 임시저장이 만들어졌고 git stash list로 보여지는 목록 중 어떤 것이 가장 최근인지 몰랐다. 

스택으로 저장하기 때문에 계속 git stash를 한다면 git stash apply하는 시점에서 바로 직전에 한 git stash의 작업 내용이 불러올 것이다. 

git stash apply

 

 

적용하고 싶은 stash가 있다면 git stash [적용하고 싶은 stash 이름(stash@{stash_number})] 을 사용하면 된다.

git stash apply [적용하고 싶은 stash 이름]	# stash 이름으로 해당 stash 적용하기
git stash apply stash@{0}	# 가장 최근 stash 적용하기
git stash apply stash@{1}	# 두번째로 가장 최근 stash 적용하기
 

 

번외)

1. git stash 명령어를 입력했는데 로컬에서 변경된 사항이 없을 경우는 ?

그렇다 ! 저장할 로컬 변경 사항이 없다 !

2. 스택을 활용하는 예제가 있다면? 바로 git stash가 스택 자료구조의 형상을 띈다.

반응형