처음부터 차근차근

Fast-Forward와 stash 본문

Git

Fast-Forward와 stash

_soyoung 2021. 9. 27. 13:53
반응형
branch를 merge하는 방법

 

branch를 merge하는 데는 두가지 방법이 있다.

- Fast-Forward

- (Fast-Forward가 아닌 것) recursive strategy 방식

 

 

 

Fast-Forward

 

Fast-Forward란 master branch에서 다른 branch로 분기했을 때, master에서는 변화가 없는데(commit을 하지 않음), 다른 branch에서 변화가 생기고(commit함) 다시 master branch로 merge하려 했을 때 사용하는 merge 방법이다.

merge했다는 commit을 하지 않고, merge하려했던 branch가 가리키는 곳을 master branch가 가리키고 merge를 끝낸다.

 

Fast-Forward를 직역하면 '빨리감기'이다.

직역한 뜻과 같이 merge했다는 commit을 하지 않고, 다른 branch가 가리키는 곳으로 빨리감기하여 merge를 끝낸다.

 

 

예시

※ 설명을 위해 쉽게 표현한것임. 실제와 다름.

이 상황에서 master branch로 checkout하고 ksy branch를 merge했다.

결과
log graph

 

 

 

stash
git stash

stash란, 현재 작업 내용을 숨기고 저장해놓는 기능이다.

 

master branch에서 분기시킨 ksy branch가 있다고 예를 들어보자.

ksy branch의 작업을 끝마치기 전에(commit 하기 전에), 작업하던 도중 master branch로 checkout하는 것은 불가능하다.

master로 checkout이 안됨

이 때 필요한 기능이 stash이다.

stash를 사용하면 현재 작업하던 내용을 저장하고 숨기기 때문에 작업을 끝마치지 않아도 다른 branch로 이동할 수 있다.

작업 중이던 내용이 숨겨져서 status에 아무것도 나오지 않음

 

주의할 점

stash는 최소한 버전관리가 되어있는 파일을 stash 할 수 있다.

즉, git add한 파일이 아니면 stash하지 못한다!

예시

third.txt를 만들고 stash를 했더니 stash가 되지 않았다.

그 이유는 third.txt가 untracked 파일이기 때문이다.

즉, git add를 해주지 않아서 추적(tracked) 되지 않는다.

 

그래서 git add를 해주고 stash를 해줬더니 잘된다.

 

+ stash에 대한 필자의 생각

stash 기능을 몰랐을 때 정말 이 기능이 있었으면 좋겠다고 생각했다.

영화관 팀 프로젝트 할 때 팀원들이 master branch에 commit한 작업을 pull받아서 빨리 보고 싶었는데 작업 도중에는 branch 변경이 불가능하다 보니까 너무 불편했었다...

그래서 이 기능을 처음 공부했을 때 내가 딱 원했던 기능이라서 너무 좋았다!

git은 정말 편리한 기능이 많은 것 같다.

 

 

 

stash 기록보기
git stash list

stash된 기록

 

<stash 2개 이상 만들었을 때>

stash 정렬기준 : 

가장 최근에 만든 stash가 가장 위에있다.

stash@{0}이 가장 최근에 만든 stash임.

 

 

 

stash한 작업 복원하기
git stash apply

stash apply를 해도 stash한 기록은 사라지지 않는다.

즉, stash 기록은 명시적으로 삭제하지 않는 이상 사라지지 않는다.

그래서 마지막 commit으로 reset을 해도 stash기록은 사라지지 않아서 다시 stash apply를 할 수 있다!

 

 

 

stash 삭제
git stash drop

가장 최근에 만든 stash 하나를 삭제한다.

 

 

 

stash apply drop 한번에 하기
git stash apply
git stash drop

원래 stash를 적용하고 삭제할려면 이렇게 했어야 했지만

 git stash pop

이렇게 하면 한 번에 할 수 있다.

pop예시

 

 

 

 

 

 

 

참고 : '지옥에서 온 git - 생활코딩' 변형 및 요약

반응형

'Git' 카테고리의 다른 글

git add 원리  (0) 2021.09.29
gistroy 설치  (0) 2021.09.28
Branch  (0) 2021.09.24
Git 기본 정리  (0) 2021.09.21
Git 시작(git 설치 ~ git 초기화)  (0) 2021.09.20
Comments