Git - stash

Git - stash

참조

Stash 란?

  • Stash 란 아직 마무리하지 않은 작업을 스택에 잠시 저장할 수 있도록 하는 명령어입니다.
  • 이를 통해 아직 완료하지 않은 일을 commit 하지 않고 나중에 다시 꺼내와 마무리할 수 있습니다.
  • Stahs는 워킹 디렉토리에 unstaged 파일들을 백업하고, 워킹 디렉토리를 깨끗한 상태, 즉 HEAD의 상태로 만드는 기능입니다.

Stash 써야 하는 상황

  • 몇시간 동안 특정 작업을 열심히 진행하고 있었습니다.
  • 그런데 갑자기 이상한 곳에 치명적인 버그가 발생해서, 여태 하던 작업을 중단하고 버그를 먼저 처리해야 하는 상황이 발생했습니다.
  • 이런 경우 이전에 했던 작업을 다시 이전으로 돌리고 버그를 잡기에는 너무 리소스가 큰 상황이 발생 합니다.
  • 이럴때 유용하게 사용하는 기능이 Stash 기능입니다.

Stash 사용 예제

1. 로컬에서 작업하고 commit 하기 전 상태

  • 로컬에서 특정 파일의 내용을 작업을 합니다.
  • git 에서는 파일의 변화가 있어서 Working Copy 영역으로 해당 파일을 보냅니다.
  • 여기서 변경된 파일은 Staging 영역에 올라오지는 않았습니다.

1

2. Stash 메뉴 선택

  • Stash 메뉴 선택합니다.

2

3. Stash 내용 입력

  • Stash 내용 입력합니다.

3

4. UnCommited changed 내용 없어짐

  • Stash를 진행하게 되면 처음에 내용 수정 후 Commit을 해야한다는 UnCommited changed 내용이 없어진걸 확인하실 수 있습니다.
  • 즉, 1번에서 작업한 내용은 어딘가 저장이 된 상태로 보관을 하고 있고 commit 상태는 가장 마지막의 버전 상태로 돌아온 상태입니다.

4

5. Stash 보관 장소

  • SourceTree 사이드 카테고리에서 Stash 메뉴를 선택합니다.
  • st 라고 하여, 처음에 생성한 Stash 가 생성되어 있는것을 확인하실 수 있습니다.
  • On master 뜻 : 현재 st 라는 스태시는 master 브랜치로부터 생성된 Stash 라는 것을 의미합니다.

5

6. 다시 작업 진행

  • Stash 를 저장한 상태에서 다시 로컬의 index.html 파일 내용을 수정합니다.

6

7. 긴급한 작업이 완료된 후, Stash 영역에 있던 내용 다시 가져옴

  • 긴급한 작업이 완료가 되었다면, 이전에 Stash 영역에 저장했던 내용을 다시 가지고 옵니다.
  • Apply Stash 메뉴를 선택하시면 됩니다.

7

8. WorkingCopy 영역에 Stash 저장한 내용 다시 적용

  • Apply Stash 속성을 선택하면 Stash로 저장했던 작업 내용들이 다시 WorkingCopy 영역으로 나타납니다.

8

Stash 참고

  • 만약 index, Staging 영역의 파일과 Workingcopy 영역의 파일이 둘다 있는 상태에서 Stash 진행하게 되면, 둘다 결합된 상태의 내용으로 합쳐져서 Stash 내용에 저장됩니다.
  • 그리고 index, Staging 영역의 파일과 Workingcopy 영역의 파일 내용이 모두 Stash 로 왔다면, 그 내용 모두 해당 로컬 파일에서는 모두 사라진 상태로 표시됩니다.
  • Stash 를 사용해도 충돌 상황이 일어날 수 있다는걸 항상 상기하시길 바랍니다.
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY