본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
Section 12.5: rebase 시 자동 stash 설정하기
자동 stash 기능 (autostash) 은 로컬 변경사항을 rebase 할때 매우 유용한 설정 옵션이다. 가끔씩은, upstream 브랜치로부터 커밋들을 가져올 필요가 있지만 현재 상태를 커밋하기에는 아직 준비가 되지 않았을 수 있다. 그러나, git 에서는 작업 디렉토리에 작업중인 내용이 있을 경우 rebase 를 시작할 수 없게 되어 있다. 이러한 경우, 자동 stash 를 설정해 두었다면 유용할 수 있다:
git config --global rebase.autostash # 최초 한번만 설정해두면 된다
git rebase @{u} # upstream 브랜치에 대해 rebase 를 수행하는 예제
역주: @{u} 는 upstream 브랜치를 나타냅니다. 이러한 단축표현식들에 대한 상세한 정보는 이곳 에서 찾을 수 있습니다.
이렇게 자동으로 stash 된 변경 사항은 rebase 가 끝나는 시점에 다시 적용되며, rebase 가 성공적으로 끝났는지, 중간에 취소(abort) 되었는지에 영향을 받지 않고 항상 적용될 것이다.
만약 rebase 가 성공적으로 끝나서 base 커밋이 변경되었다면, 자동 stash 된 내용을 새로운 커밋에 적용시킬 때 충돌(conflict) 이 발생할 수 있을 것이다.
이러한 경우, 이후 커밋을 수행하기 위해서는 해당 conflict 을 해결해야 할 것이다. 이러한 conflict 발생 여부는 rebase 수행 전에 수작업으로 stash 를 수행하고 완료 이후 stash 된 내용을 다시 적용할때와 전혀 차이점이 없으므로 stash 를 자동으로 수행하는 것으로 인해 발생하는 부작용은 없다고 볼 수 있을 것이다.
[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)
'번역 > Git Notes for Professionals' 카테고리의 다른 글
12.7: 코드 리뷰를 위한 rebase 수행하기 (0) | 2019.11.08 |
---|---|
12.6: rebase 작업 시 모든 커밋들에 대해 테스트를 수행하기 (0) | 2019.11.07 |
12.4: 최초 (initial) 커밋으로부터 rebase 하기 (0) | 2019.11.06 |
12.3: 대화형(interactive) rebase (0) | 2019.11.06 |
12.2: Rebase 시 "ours" 와 "theirs", 로컬과 원격 개념 이해하기 (0) | 2019.11.05 |