본문 바로가기
Git&GitHub

[GIT 14] 수정중인 파일 감추기 및 되돌리기 - stash

by 어쩌다개발 2023. 1. 21.
반응형

참고: Do It! 깃&깃허브 입문

브랜치에서 파일을 수정하고 커밋하기 않은 상태에서 다른 파일을 커밋해야 하는 경우가 있다.
아직 커밋하지 않은 파일들을 그냥 둬도 상관없지만 계속 커밋하라는 메세제가 나타나기 때문에 번거롭다.
실수로 다른 파일과 함께 커밋될 수도 있기 때문에, 이럴 때 아직 커밋하지 않고 작업 중인 파일들을 잠시 감춰두고 필요할 때 꺼내올 수 있다.

1) st라는 저장소를 만들고 st 디렉터리로 이동한다.

git init st
cd st

 

2) git stash 명령을 사용하려면 파일이 tracked 상태여야 한다. 즉 한번은 커밋을 한 상태여야 한다.
vim 으로 f1.txt 파일을 만든 후 아무 내용이나 작성한 후 스테이지에 올리고 'f1' 이라는 메세지와 함께 커밋한다.

vim f1.txt
git add f1.txt
git commit -m "f1"

 

3) 추가로 f2.txt 파일도 만들고 아무 내용을 입력한 후 저장한다. f2.txt 파일도 스테이지에 올린 후 'f2' 라는 메세제와 함께 커밋한다.

vim f2.txt
git add f2.txt
git commit -m "f2"

 

4) f1.txt 와 f2.txt를 vim 으로 열어서 내용을 수정한 후 저장한다.

vim f1.txt
vim f2.txt

 

5) git 상태를 확인한다.

vim status

f1.txt 와 f2.txt 가 수정된 걸 확인할 수 있다.

 

6) f1.txt 와 f2.txt 를 커밋하기 전에 다른 파일을 수정해야 한다고 가정한다. 커밋하지 않은 수정 내용을 어딘가에 보관하려면 git stash 명령어를 사용한다. git stash save 또는 간단히 git stash 라고만 해도 된다.

git stash

 

7) 다시 git status로 상태를 확인해본다.

git status

 

8) 같은 방법으로 여러 파일을 수정한 후 따로 보관할 수 있으며, 보관한 파일들은 stash list 에서 확인할 수 있다.

git stash list

가장 먼저 감춘 것은 stash@{0}에 들어있고, 다른 파일이 추가되면 기존 파일은 statsh@{1}로 옮겨지고 새로 추가된 파일이 statsh@{0}에 담긴다. 즉 먼저 감춘것은 밀려나게 되고, 최근에 감춘 것이 {0}에 추가되는 것을 알 수 있고 stash 스택(stack)이라고도 표현한다.

 

9) 감춰둔 파일을 꺼내와 계속 수정하거나 커밋해야 할 때 git stash 명령 뒤에 pop을 추가하면 stash 목록에서 가장 최근 항목을 되돌린다.

git stash pop

 

10) statsh 목록에 저장된 수정 내용을 나중에 또 사용할지도 모른다면 git stash apply 명령을 사용한다. stash 목록에서 가장 최근 항목을 되돌리지만 저장했던 내용은 그대로 남겨둔다.

git stash apply

 

11) stash 목록에서 가장 최근 항목을 삭제하는 명령어는 git stash drop 이다.

git stash drop
반응형

댓글