일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 안드로이드
- Java
- Android 12 대응
- Android ViewPager2
- 영어공부
- 66챌린지
- 알고리즘 자바
- Android Jetpack
- Android 12
- Kotlin FCM
- Android Interceptor
- 영어독립365
- Android DataBinding
- WebView
- 안드로이드 갤러리 접근
- scope function
- OkHttp Interceptor
- Android
- Kotlin
- android recyclerview
- DataBinding
- Android WebView
- 안드로이드 fcm
- 프로그래머스 알고리즘
- 안드로이드 카카오 로그인
- Android Navigation
- Android ProgressBar
- MVP Architecture
- 습관만들기
- 카카오 알고리즘
- Today
- Total
Developer Geek
[Git] git stash란 본문
Git Stash
stash 뜻은 '넣어 두다'이다.
깃 공식 문서에 따르면 Git Stash를 다음과 같이 말하고 있다.
Stash the changes in a dirty working directory awway
말 그대로 작업물의 수정 내용을 넣어둔다(커밋하지 않고)는 의미인 것 같다.
개요
깃 공식 문서에 따르면 git stash
에 대해사 다음과 같이 설명하고 있다.
Use
git stash
when you want to record the current state of the working directory and the index,
but want to go back to a clean working directory. The command saves your local modifications away and reverts the workig directory to match theHEAD
commit.
여기서는 git stash
를 어떤 상황에서 왜 써야하는지를 명시하고 있다.git statsh
를 사용할 때는 현재 작업하고 있는 부분을 기록하며 수정 전의 작업물로 돌아갈 때 사용하라고 이야기하고 있다.
사용 예시
1. Pulling into a dirty tree
내가 깃을 통해 협업을 진행한다고 가정해보자.
예를들어 내가 작업하고 있는 브랜치는 feature/login
이고 이 브랜치는 develop
에서 나오게 되었다.
작업하던 중 다른 팀원의 작업 내용이 develop
에 합쳐지게 되었고, 작업 내용이 내가 개발중인 로그인 부분에도 영향이 있는 것이다.
만약 내가 작업한 부분이 develop
에서 변경된 작업과 충돌될 부분이 없다면 간단하게 git pull
을 수행하면 된다.
하지만 내가 작업한 부분이 develop
에서의 변경된 작업과 충돌되는 부분이 있다면 git pull
을 한다고 해도 conflict가 발생하고 쉽게 병합되지 않을 것이다.
이런 경우에 stash를 이용하여 아래와 같이 수행하면 쉽게 해결할 수 있다.
$ git pull
...
file foobar not up to date, cannot merge.
$ git stash -m "my stash message..."
$ git pull
$ git stash pop
위의 흐름을 가볍게 살펴보자.
git pull
하는 과정에서 병합 실패!git stash
를 통해서develop
과 충돌이 발생할 수 있는 부분을 임시 저장. (-m "..."
: 스태시 메시지는 옵션)git pull
를 통해 다시 최신 버전의develop
과 병합- 병합 성공한 후, 임시 저장되어 있는 기존 작업내용
git stash pop
을 통해 가져오기.
2. Interrupted workflow
이 경우는 내가 회사에서 일하면서 가장 많이 겪은 경우이다.
만약 내가 맡은 작업을 진행하던 중, 핫 픽스 이슈가 들어오거나 QA 검수 중 이슈 또는 앱 심사와 같은 급히 처리해야할 일들이 발생한다면 작업중인 내용은 우선순위가 밀리게된다. 그냥 커밋 후, 다른 작업을 진행하면 되지만 커밋하기에는 내용이 정리되어 있지 않고 오류를 포함한 코드들이 있을 수 있기에 커밋하기가 꺼려진다.
이런 경우에도 stash를 이용하여 아래와 같이 수행하면 커밋하지 않고 처리할 수 있다.
$ git stash -m "Stash Login to resolve hotfix"
$ resolve hotfix...
$ git commit -m "Fix in a hurry"
$ git stash pop
위의 흐름을 가볍게 살펴보자
git stash
를 통해서 기존 작업 내용을 임시저장하고 기존의 클린한 코드로 돌아가서 핫 픽스를 대응할 상태를 만든다.- 핫 픽스를 대응 후,
git commit -m "Fix in a hurry"
작업 내용을 커밋한다. - 이후에 다시 임시 저장되어 있던 기존 작업내용을
git stash pop
을 통해 가져온다.
질문과 잘못된 점에 대해 말씀해주시는 건 언제나 환영입니다.
zero5.two4@gmail.com
Reference