지난 포스팅에서 작업한 코드를 임시 저장소에 넣어두고 다시 꺼내는 git stash, git stash list, git stash apply에 대해서 설명했다. 이 포스팅은 지난 포스팅의 내용과 이어지는 부분이 많기 때문에, 먼저 그것을 확인하는 것이 좋을 것 같다.
2022.12.14 - [개발 도구/Git] - 작업중인 코드 임시 저장하기(git stash)
작업중인 코드 임시 저장하기(git stash)
어떤 작업을 하던 중, 급하게 처리해야 하는 다른 작업건이 생겼다면, 그런데 그 우선작업건이 다른 브랜치에서 해야 하는 일이라면 어떻게 해야할까? 작업을 마무리하지 못한 상태에서 다른 브
heinafantasy.com
그리고 오늘 포스팅에서는 브랜치 여러개로 관리하던 프로젝트를 실수로 다른 브랜치에서 작업했을 때... 좀 더 효율적으로 처리하는 방법에 대해서 설명하려고 한다. git stash 커맨드를 사용하여 임시저장한 코드는 어떤 브랜치에서든 모두 확인이 가능하고 또 가져올 수도 있으니, 이럴 때에도 git stash를 이용해서 코드를 옮기면 된다.
실수로 잘못된 브랜치에서 작업했을 때
premium 브랜치에서 작업해야 하는 내용을 main 브랜치에서 작업했을 때의 상황이다. 일단 git stash를 사용해서 작업한 내용을 임시 저장소로 옮긴다.
그 다음 premium 브랜치로 이동해서 git stash list로 스택 히스토리를 확인한다. main 브랜치에서 작업했던 내용이 스택에 옮겨져 있는 것을 확인할 수 있다.
코드가 저장소에 들어있는 것을 확인했다면 git stash apply 커맨드를 사용하여 가져온다.
git stash apply [스택아이디]
이 때 생각해야 할 점이 있는데, git stash apply 라고만 쓰면 가장 최신에 저장한 코드를 가져온다. 중간 부분에 있는 코드를 가져오고 싶다면 stash@{n} 형식의 스택 아이디를 함께 적어 주어야 한다.
이제 코드를 가져왔으니 작업을 마무리 하고 커밋하면 끝!
스택에 저장된 내용을 삭제하고 싶을 땐 git stash drop
임시 저장소인 스택(stack)에 저장된 코드들은 삭제되지 않고 계속 차곡차곡 쌓인다. 이미 한번 사용한 작업 내용은 또 사용할 것이 아니라면 지워주는 것이 헷갈리지 않는다. 스택 리스트를 지우는 커맨드는 아래와 같다.
git stash drop [스택아이디]
코드를 가져온 후 자동으로 삭제해주는 git stash pop
신규 브랜치를 생성하며 바로 해당 브랜치로 이동하게 해주는 커맨드가 있는 것처럼, git stash도 코드를 가져온 후 자동으로 스택에서 삭제해주는 커맨드가 있다. git stash apply - git stash drop 과정을 거칠 필요가 없어 편리하다.
git stash pop [스택아이디]
위와 같은 커맨드를 실행하면 해당되는 스택아이디의 코드를 적용한 후에 자동으로 스택에서 삭제한다. 이것도 apply와 마찬가지로 뒤에 있는 [스택아이디]를 생략할 수 있으며, 그럴 때에는 가장 최근의 내용을 적용하고 삭제한다.
앞으로 우리는 가져온 코드를 다른 곳에서도 사용할 것인지의 여부에 따라 git stash apply를 할 것인지 git stash pop을 할 것인지 결정하면 된다.
'개발 도구 > Git' 카테고리의 다른 글
커밋 여러개를 하나로 만들고 싶을 때(git reset --soft) (0) | 2022.12.22 |
---|---|
다른 브랜치에서 내가 원하는 커밋만 가져오고 싶을 때(git cherry-pick) (0) | 2022.12.19 |
작업중인 코드 임시 저장하기(git stash) (0) | 2022.12.14 |
머지 기록 없이 깔끔한 커밋 히스토리 관리하기(git rebase) (0) | 2022.12.13 |
git reset 되돌리고 싶을 때 커밋 리스트 확인하기(git reflog) (0) | 2022.12.10 |
댓글