Skip to content
TUWLAB.com
모든 게시물에 대하여 '링크'
방식의 퍼가기만 허용합니다.
한양대학교 전자통신컴퓨터공학부
바라미
  • 542
  • 2586059
DNS Powered by DNSEver.com
일반

[GIT] 임시 저장소 사용하기: stash

Posted 2014. 10. 23 Updated 2015. 11. 27 Views 4775 Replies 0


이번 글에서 다룰 내용은 작업 도중에 급하게 처리해야 할 일이 생겼을 때 유용하게 사용할 수 있는 명령인 Stash에 관한 것입니다.

Stash는 작업 내용을 저장하는 일종의 Stack으로, 최근에 Stash한 순서로 작업들이 저장됩니다.


작업 임시 저장하기

Commit 되지 않은 작업 내용을 Stash에 임시 저장합니다. 이 때, 작업 중인 모든 내용이 Stash에 저장되면서 작업 디렉토리는 HEAD로 초기화 됩니다. 즉, 작업 디렉토리는 'git reset --hard'를 수행한 것과 같이 됩니다.

git stash


임시 저장한 작업 불러오기

다음 명령은 가장 최근에 Stash한 작업을 불러와서 현재 작업 디렉토리에 적용합니다. 경우에 따라서 충돌(Collision)이 발생하고, Merge를 수행해야 할 수도 있습니다.

git stash pop


Stash 사용 예시


작업 중 인터럽트(Interrupt)가 발생했을 때

Stash는 대개 작업 디렉토리에서 작업을 하는 도중에 뭔가 급한 요청(Hotfix 등)이 들어와서 이를 먼저 해결해야 할 경우 유용하게 사용할 수 있습니다.

작업을 하는 도중에 Branch를 변경하거나 하는 등의 작업을 하려면 우선 Commit을 해야 하는데, 작업 중이어서 소스코드에 오류가 있을 가능성이 존재하는 등 Commit 하기 애매한 상황에서 Stash를 사용하게 됩니다.

이 경우 git stash를 명령으로 작업 내용을 모두 임시저장하고 작업 디렉토리를 깨끗하게 정리한 뒤, 새로운 작업(Hotfix)을 수행하면 됩니다. 새로운 작업의 Commit이 끝나고 Push까지 마쳤다면 git stash pop으로 임시 저장한 작업을 불러와서 계속 진행 하면 됩니다.

프로그램에서 인터럽트를 처리하는 방법과 유사하다고 생각하면 됩니다. 작업중인 내용을 Stack에 저장하고 ISR로 Jump해서 급한 작업을 처리한 뒤, 복귀해서 다시 Pop하는 바로 그 순서요..^^


잘못된 Branch에서 작업을 하고 있었다는 것을 깨달았을 때

GIT에 막 입문해서 작업을 하기 시작할 때 흔히 많이들 겪는 실수입니다.

한창 작업을 하고 있다가 문득 현재 Branch가 뭔지 확인해 봤는데 잘못된 Branch에서 작업을 하고 있었다거나, 작업을 시작하기 전 새로운 Branch를 따는 것을 잊은 경우와 같은 실수입니다.

물론 일단 Commit을 수행한 뒤 올바른 Branch에서 Cherry-pick으로 Commit을 가져오고, 잘못 수행한 Commit은 삭제 하는 방법으로 작업을 진행할 수도 있지만, 왠지 번거롭습니다.

다음 명령어 순서는 이와 같은 상황에서 유용하게 사용할 수 있습니다.

wrondBranch$ git stash
wrongBranch$ git checkout rightBranch
rightBranch$ git stash pop
rightBranch$ git commit

이는 잘못된 Branch에서 작업하던 내용을 Stash에 담아서 올바른 Branch로 가져온 뒤, Pop을 해서 올바른 Branch에 Commit을 합니다.


TAG •
서비스 선택
이용중인 SNS 버튼을 클릭하여 로그인 해주세요.
SNS 계정을 통해 로그인하면 회원가입 없이 댓글을 남길 수 있습니다.
댓글
?
Powered by SocialXE

List of Articles
번호 분류 제목 글쓴이 최근 수정일 조회 수
161 일반 [WSL] Windows Subsystem for Linux - 디스플레이 서버 설정 및 GUI 사용하기 file TUW 2021.12.28 33107
160 일반 PSpice 시뮬레이션 결과창에서 Search Command 사용하기 file TUW 2017.06.02 32402
159 일반 [GIT] 병합하고 Commit 재정렬하기: cherry-pick, rebase, merge file TUW 2017.06.02 32240
158 AVR [AVR 강의] AVR 강의자료 - 5. 아날로그-디지털 변환기(ADC) file TUW 2017.06.02 31025
157 Linux [Ubuntu] Windows와 멀티부팅 환경에서 시간이 맞지 않는 현상 해결하기 TUW 2017.06.08 29610
156 Linux 디렉토리를 다른 경로에 마운트하기 (mount --bind) TUW 2018.11.16 29588
155 Python [Django Tutorial] 6. Database 연동하기 - Model설계, Migration file TUW 2017.06.16 29428
154 PSpice PSpice에서 기존 부품 Parameter 수정하여 시뮬레이션하기 file TUW 2021.12.28 27995
153 일반 [GIT] GIT이란 무엇인가, GIT에 대하여 file TUW 2017.06.02 27726
152 일반 [GIT] Commit하고 원격 저장소로 내보내기: add, reset, commit, push TUW 2018.01.18 27521
151 PSpice PSpice에서 Model Editor를 활용하여 새로운 부품 만들고 사용하기 file TUW 2021.12.28 26889
150 일반 AutoCAD 자주 사용하는 명령어 요약 정리 TUW 2014.04.24 25508
149 Android android.process.acore 문제 해결방법 file TUW 2021.12.28 24728
148 Linux [사설 클라우드 구축] 삼바(SAMBA) 서버 구축, 우분투-윈도 공유폴더 구현 file TUW 2017.06.02 24645
147 Linux Linux 시스템 종료 명령어 - shutdown과 halt TUW 2014.04.23 24534
146 Linux [Ubuntu] 화면캡처 및 작업공간 전환 단축키 TUW 2014.04.20 24162
목록
Board Pagination Prev 1 2 3 4 5 6 7 ... 13 Next
/ 13

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5