이 영역을 누르면 첫 페이지로 이동
lucid_dream 블로그의 첫 페이지로 이동

lucid_dream

페이지 맨 위로 올라가기

lucid_dream

다양한 상상을 현실로 만드는 멀티 크리에이터를 꿈꾸고 있습니다 ❤️

Stash로 변경 이력 임시 저장하기

  • 2021.10.24 07:52
  • 🌈 기술스택/Git
글 작성자: NoHack
728x90

변경 이력을 잠시 저장해야 하는 경우 💦

프로젝트에서 자신이 맡은 기능을 열심히 구현하고 있는데, 중간에 다른 브랜치를 확인해야 하는 경우가 발생할 수 있습니다. 그런데 커밋을 하지 않고 이동하게 되면, 현재 브랜치의 워킹 디렉토리에서 작업 중이던 내용들이 해당 브랜치에서도 함께 보이기 때문에 반드시 커밋을 하고 넘어가야 합니다. 하지만 커밋을 하기 애매한 경우라면 정말 곤란할 것입니다.

이때 사용할 수 있는 것이 git stash입니다. 이 명령은 stash stack이라는 공간에 현재 작업 중인 내역(WIP: Working In Progress)들을 임시적으로 저장할 수 있는 명령입니다. 스택 구조를 띄고 있기 때문에 stash 명령으로 저장한 이력의 위로 나중에 저장한 이력들이 계속해서 쌓이게 됩니다. 스택이라면 기본적으로 나중에 들어간 데이터가 먼저 나오기 때문에 stash 역시 동일하게 동작하지만, stack의 아이디를 통해 원하는 데이터만 가져와서 적용할 수도 있습니다.

stash를 사용하게 되면 하나의 파일에서 여러 코드를 시험해 보고 싶은 경우에도 손쉽게 해결할 수 있습니다.

Stash 사용하기

stash는 정말 간단하며, 다음의 명령들을 이용할 수 있습니다.

# stash stack에 현재 WIP 추가
git stash

# 메시지와 함께 추가
git stash -m "메시지"

# Staging Area는 제외하고 추가
git stash --keep-index

# Untracked 상태인 파일들도 함께 추가
git stash -u

-m 옵션을 통해 메시지를 함께 저장할 수 있는데, 아래의 나머지 두 명령에도 붙일 수 있습니다.

stash로 작업 중이던 내역들을 저장한 다음 스택의 상황을 보고 싶다면, git stash list를 실행하면 됩니다.

위 사진은 stash를 사용해 내역을 몇 가지 담아 본 예시이며, stash@{n}의 번호가 높은 데이터들이 더 이전에 저장된 것들입니다. 커밋의 내용을 자세히 보고 싶을 때 git show <hash> 명령을 사용했던 것처럼, git stash show <hash> 명령을 사용하면 해당 stash가 담고 있는 내용을 볼 수 있습니다. 내용을 좀 더 자세히 보고 싶다면 -p 옵션을 함께 사용하면 됩니다.

그리고 stash의 hash를 알고 있다면, 스택에서 hash에 해당되는 내역만 다시 반영할 수 있습니다. git stash apply <hash> 명령을 사용하면 되고, hash를 입력하지 않으면 가장 최근의 내역을 가져옵니다. 여기서 값을 가져와 반영한다 해서 해당 stash가 사라지는 것은 아니고, 실제로 위에서부터 빼오면서 반영하려면 git stash pop 명령을 사용해야 합니다. 또한 stash를 반영하여 브랜치를 새로 만들고 싶은 경우도 있을 수 있습니다. 이때는 git stash branch <branch name> 명령을 사용하면 됩니다.

마지막으로 모든 작업을 마쳤으면, git stash drop <hash>와 git stash clear 명령으로 스택을 정리하면 됩니다.

References 📝

본문의 내용은 Git 공식 문서를 참고해서 작성했습니다 ❤️

 

저작자표시 비영리 동일조건 (새창열림)

'🌈 기술스택 > Git' 카테고리의 다른 글

실수를 되돌리는 방법들 (restore, reset, revert)  (0) 2021.10.24
Merge와 Rebase 알아보기  (0) 2021.10.24
프로젝트를 멋지게 설명하는 README.md  (0) 2021.09.25
Branch의 종류와 사용법  (0) 2021.09.25
느낌 있는 Commit Message 작성하기  (0) 2021.09.25

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 실수를 되돌리는 방법들 (restore, reset, revert)

    실수를 되돌리는 방법들 (restore, reset, revert)

    2021.10.24
  • Merge와 Rebase 알아보기

    Merge와 Rebase 알아보기

    2021.10.24
  • 프로젝트를 멋지게 설명하는 README.md

    프로젝트를 멋지게 설명하는 README.md

    2021.09.25
  • Branch의 종류와 사용법

    Branch의 종류와 사용법

    2021.09.25
다른 글 더 둘러보기

정보

lucid_dream 블로그의 첫 페이지로 이동

lucid_dream

  • lucid_dream의 첫 페이지로 이동

검색

메뉴

  • All categories
  • About me
  • Guest Book

카테고리

  • 분류 전체보기 (122)
    • 💦 일상뻘글 (1)
    • ⭐️ 프로젝트 (7)
      • 사이드 프로젝트 (1)
      • 스터디 노트 (6)
    • 🌈 기술스택 (31)
      • Web Basic (10)
      • JavaScript (14)
      • React (0)
      • Git (7)
    • 💻 컴퓨터공학 (28)
      • 자료구조 (13)
      • 알고리즘 (7)
      • 운영체제 (4)
      • 소프트웨어 공학 (4)
    • 📝 문제풀이 (55)
      • 프로그래머스 (55)
      • 과제관 (0)
    • 🐹 취미생활 (0)
      • Film Log (0)
      • Cover Song (0)

댓글

정보

NoHack의 lucid_dream

lucid_dream

NoHack

나의 외부 링크

  • Github
  • Instagram

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © NoHack.

티스토리툴바