사실 예전부터 알고 있던거긴 하지만...
feature브랜치 위에서 작업하다보면 팀원 전체가 공유하는 공통 브랜치(develop)의 내용이 바뀌어서 커밋 내용을 따라 잡아야 할 일이 빈번하게 생긴다. 이 때 나는 머지 커밋이 생기는게 보기 싫어서 merge 대신에 rebase를 사용하는데, merge는 충돌만 없으면 별 말 없는 반면에 rebase는 마지막 커밋 이후에 커밋하지 않은 작업물이 남아 있으면 걔네들 때문에 리베이스 못 하겠으니 먼저 커밋하거나 stash해서 치워두라고 말하고 종료한다.
그래서 지금까지는
git stash
git rebase develop
git stash pop
이렇게 rebase 전후로 stash push, pop을 해 가면서 썼었다.
이게 또 문제가 있는게 stash pop하는걸 까먹을때가 은근 많은데, 까먹은 상태에서 유니티에서 바뀐 소스 파일을 다시 읽어들이기라도 하면 각종 .meta
, .mat
파일들이 다시 생성되면서 stash apply가 쉽게 안 되는 상태가 되어버린다. 그리고 기다리는게 귀찮기도 하고. 게임 프로젝트다보니 바이너리가 많아 stash하는데만 수 초가 소요되는데 그걸 기다렸다가 rebase 명령 치는게 정말 귀찮다.
--autostash
옵션을 붙이면 저 세 명령을 자동으로 해준다. 혹여나 rebase 다 하고 충돌 때문에 stash를 적용할 수 없는 상황이라면 stash가 어디 있고, 충돌을 해결하고 나면 어떻게 적용할 수 있는지도 알려준다.
그렇게 또 한동안 rebase할 때 마다
git rebase --autostash develop
처럼 --autostash
옵션을 매번 반복해서 넣어줬는데, 계속 하다보니 이것도 이젠 귀찮아졌다. 그래서
git config --global rebase.autostash true
이렇게 config를 수정해서 옵션을 붙이지 않아도 자동으로 자동 스태쉬 옵션이 켜지게 해줬다. 전역적으로 스위치를 켜놓기 싫다면 그냥 저장소에 있는 gitconfig 파일에 명시해도 상관없고.
덤으로, 이렇게 하면 git pull -r
할때도 자동 스태쉬가 적용된다.
'Note' 카테고리의 다른 글
TIL: git fetch가 실제로 원격에서 데이터를 받아온다 (0) | 2017.06.04 |
---|---|
TIL: 윈도우에서 ALT+<아스키 번호> 조합으로 문자를 입력할 수 있다 (0) | 2017.05.31 |
TIL: Visual studio에서 텍스트를 ctrl + U 로 lowercase화 시킬 수 있다 (0) | 2017.05.26 |
TIL: macOS나 iOS에는 텍스트 읽기 기능이 있다 (0) | 2017.05.24 |
TIL: docker 컨테이너에서 bash 쉘을 여는 방법 (0) | 2017.05.22 |