본문 바로가기
개발 도구/Git

실수로 다른 브랜치에서 작업했을 때(git stash list/apply/drop/pop)

by ♥︎해이나♥︎ 2022. 12. 15.
반응형

지난 포스팅에서 작업한 코드를 임시 저장소에 넣어두고 다시 꺼내는 git stash, git stash list, git stash apply에 대해서 설명했다. 이 포스팅은 지난 포스팅의 내용과 이어지는 부분이 많기 때문에, 먼저 그것을 확인하는 것이 좋을 것 같다.

 

2022.12.14 - [개발 도구/Git] - 작업중인 코드 임시 저장하기(git stash)

 

작업중인 코드 임시 저장하기(git stash)

어떤 작업을 하던 중, 급하게 처리해야 하는 다른 작업건이 생겼다면, 그런데 그 우선작업건이 다른 브랜치에서 해야 하는 일이라면 어떻게 해야할까? 작업을 마무리하지 못한 상태에서 다른 브

heinafantasy.com


그리고 오늘 포스팅에서는 브랜치 여러개로 관리하던 프로젝트를 실수로 다른 브랜치에서 작업했을 때... 좀 더 효율적으로 처리하는 방법에 대해서 설명하려고 한다. git stash 커맨드를 사용하여 임시저장한 코드는 어떤 브랜치에서든 모두 확인이 가능하고 또 가져올 수도 있으니, 이럴 때에도 git stash를 이용해서 코드를 옮기면 된다.

 

git stash 타이틀

 

실수로 잘못된 브랜치에서 작업했을 때

premium 브랜치에서 작업해야 하는 내용을 main 브랜치에서 작업했을 때의 상황이다. 일단 git stash를 사용해서 작업한 내용을 임시 저장소로 옮긴다.

 

git stash

 

그 다음 premium 브랜치로 이동해서 git stash list로 스택 히스토리를 확인한다. main 브랜치에서 작업했던 내용이 스택에 옮겨져 있는 것을 확인할 수 있다.

 

git checkout & git stash list

 

코드가 저장소에 들어있는 것을 확인했다면 git stash apply 커맨드를 사용하여 가져온다.

 

git stash apply [스택아이디]

git stash apply

 

이 때 생각해야 할 점이 있는데, git stash apply 라고만 쓰면 가장 최신에 저장한 코드를 가져온다. 중간 부분에 있는 코드를 가져오고 싶다면 stash@{n} 형식의 스택 아이디를 함께 적어 주어야 한다.

 

git add & git commit

 

이제 코드를 가져왔으니 작업을 마무리 하고 커밋하면 끝!

 

스택에 저장된 내용을 삭제하고 싶을 땐 git stash drop

임시 저장소인 스택(stack)에 저장된 코드들은 삭제되지 않고 계속 차곡차곡 쌓인다. 이미 한번 사용한 작업 내용은 또 사용할 것이 아니라면 지워주는 것이 헷갈리지 않는다. 스택 리스트를 지우는 커맨드는 아래와 같다.

 

git stash drop [스택아이디]

git stash drop

 

코드를 가져온 후 자동으로 삭제해주는 git stash pop

신규 브랜치를 생성하며 바로 해당 브랜치로 이동하게 해주는 커맨드가 있는 것처럼, git stash도 코드를 가져온 후 자동으로 스택에서 삭제해주는 커맨드가 있다. git stash apply - git stash drop 과정을 거칠 필요가 없어 편리하다.

 

git stash pop [스택아이디]

 

위와 같은 커맨드를 실행하면 해당되는 스택아이디의 코드를 적용한 후에 자동으로 스택에서 삭제한다. 이것도 apply와 마찬가지로 뒤에 있는 [스택아이디]를 생략할 수 있으며, 그럴 때에는 가장 최근의 내용을 적용하고 삭제한다.


앞으로 우리는 가져온 코드를 다른 곳에서도 사용할 것인지의 여부에 따라 git stash apply를 할 것인지 git stash pop을 할 것인지 결정하면 된다.

반응형

댓글