본문

08. 적용한 작업 내용은 스택에서 없애기

반응형

1. 작업 내용 저장git stash 

2. 작업 내용 조회(=스택 살펴보기)

git stash list

3. 작업 내용 적용 

git stash apply [작업 내용의 아이디]

* 작업 내용의 아이디를 생략하면 가장 최근의 작업 내용이 적용됨

4. 작업 내용 제거

git stash drop [작업 내용의 아이디]

* 작업 내용의 아이디를 생략하면 가장 최근의 작업 내용이 제거됨

이전 영상에서 저는 적용(apply)한 작업 내용은 스택에서 제거(drop)해주는 게 좋다고 했었죠?

그래서 git stash apply를 쓰고 git stash drop을 바로 해줬었는데요.

그런데 사실 이런 식으로 번거롭게 할 필요없이, 작업 내용을 적용하면서 동시에 스택에서 제거도 해주는 커맨드가 있습니다.

그건 바로

git stash pop [작업 내용의 아이디]

이라는 커맨드입니다. 이 커맨드를 쓰면 특정 작업 내용을 적용함과 동시에 그것을 스택에서 제거합니다. 

어떤 커맨드인지 직접 보여드릴게요.

1. git stash 하기

아래 그림과 같은 README.md 파일을 갖고 해볼게요.

기존의 내용에 테스트용 문장인 '"git stash pop" 테스트' 라는 문장을 추가해볼게요.

그 다음 파일을 저장(Save)하고

작업 내용을 스택에 저장(git stash)할게요.

이때 잠깐 README.md 파일을 보면 아래 그림처럼 원래대로 돌아옵니다. 

작업 내용을 스택에 저장(git stash)하고 나면 파일의 내용은 작업하기 이전의 상태(=최신 커밋에서의 상태)로 돌아온다고 했었죠?

지금 정상적인 상태니까 당황하지 마세요.

자, 이제 스택에 저장된 작업 내용을 살펴볼게요. git stash list 커맨드로 확인해보면,

방금 한 작업 내용이 잘 저장되어 있습니다.

2. git stash pop 하기

이 상태에서 

git stash pop

을 실행할게요.

그럼 README.md 파일이 변경되었다는 문장이 출력됩니다. 다시 README.md 파일을 보면, 

작업 내용이 복원되었습니다. 여기까지는 git stash apply와 차이가 없습니다. 

하지만 다시 스택을 들여다보면,

아무것도 출력되지 않습니다. 아까 설명한 대로 git stash pop은 작업 내용을 적용하면서 동시에 스택에서 제거하기 때문입니다.

참고로, 

git stash pop [작업 내용의 아이디]

git stash pop 커맨드는

[작업 내용의 아이디]를 인자로 주면, 특정 작업 내용을 적용하면서 스택에서 제거합니다.

[작업 내용의 아이디]를 인자로 주지 않으면, 가장 최근에 한 작업 내용을 적용하면서 스택에서 제거합니다. 

자, 이번 노트에서는 git stash pop 커맨드를 배웠는데요.

앞으로 스택에 저장된 작업 내용을 working directory에 적용할 때

  • 그 작업 내용을 나중에 또 쓸 필요가 있다면 git stash apply
  • 나중에 또 쓸 필요가 없다면 git stash pop을 쓰면 됩니다. 

일반적으로는 후자의 경우가 더 많을 겁니다.

반응형

공유

댓글