지옥에서 온 Git

Rebase

수업소개

브랜치를 자주 사용하면 버전의 히스토리가 복잡해집니다. 이런 경우에 히스토리를 단순하게 정리 정돈해주는 기능이 Rebase입니다. Rebase는 무엇인지, 어떻게 동작하는지, 어떻게 사용하는지를 알아보겠습니다. 

수업

 

본 수업에 대한 의견

"강의 보았습니다만, 개인적으로는 merge보다 rebase를 선호하고, 오히려 rebase를 안전하게 느끼고 있습니다. 중간에 conflict를 수정하다 어려움을 만나도 언제든지 rebase --abort로 rebase 작업을 취소할 수 있고, 심지어 그것 조차도 부담이 된다면, rebase 전에 임시 branch를 백업 용도로 만들었다가 rebase 후에 삭제하는 방법을 사용하기도 합니다.

세번째 강의에서처럼 지속적으로 conflict가 발생하는 경우라면, 아예 master에 임시 branch를 만들고 커밋별로 cherry-pick을 하기도 합니다.
rebase와 cherry-pick으로 히스토리를 정리한 뒤 push하면 master 브랜치 관리자가 해당 branch를 확인후 fast-forward 방식만으로 master를 관리하기 쉽게 만들어준다는 장점이 있습니다." (안신열님의 의견)

댓글

댓글 본문
  1. dotori
    저도 git-scm.com의 내용을 보고 있는데
    임시로 만드는 patch는 feature가 만들어놓은 커밋도 아니고, master가 만들어놓은 커밋도 아닌 것 같습니다.
    제가 이해한 내용은 master와 다른 길을 간 feature의 커밋들과 master의 최신내용(HEAD)를 각각 비교한 diff가 Patch이다.. 입니다.
    이 patch를 이후에 차례로 적용하는 것이죠..
    저도 실제 파일이 어떻게 만들어지는지는 잘 모릅니다..
    도움이 될런지 모르겠습니다..
    여하튼 강의는 무척 잘 보고있습니다. 감사합니다.
  2. sharepia@gmail.com
    안녕하세요~ 좋은 강의 감사드립니다.
    그런데 오픈튜토리얼 Rebase 강좌를 보다가 https://git-scm.com 의 Document Book의 Rebase에 나와있는 내용하고 좀 다른 부분이 있는것 같아서 문의 드립니다.
    오픈 튜토리얼 강좌의 Rebase 에서는 feature branch 에서 feature가 만들어놓은 커밋이 임시저장소(temp = patch) 라고 하셨습니다.
    그런데 git-scm 사이트에 Document Book rebase 에서는 master branch 에서 만들어놓은 커밋이 임시저장소(temp = Patch) 로 만든다고 되어있거든.
    어떤것이 맞는부분인지 계속 비교하면서 봐도 이해가 안가거든요. 제가 잘 못 이해를 한건지 아니면 오픈튜토리얼 강좌와 git-scm 사이트의 내용과 틀린것인지요?

    내용참조 주소
    https://git-scm.com......%B0

    위의 주소에서 "Figure 36. 나뉜 브랜치를 Merge 하기" 라는 부분의 Rebase 설명 부분을 비교하였습니다.
    참고 부탁드립니다.
  3. 오즈
    이해가 잘 안 가서 검색해보다가 영어 문서들 ;ㅁ; 잘 모르겠더라고요 역시 생활코딩 감동먹고 갑니다
    감사합니다
  4. Allen Cho
    "안신열님의 의견"이란 링크가 아래와 같이 꼬여져 있습니다.

    <a href="http://강의 보았습니다만, 개인적으로는 merge보다 rebase를 선호하고, 오히려 rebase를 안전하게 느끼고 있습니다. 중간에 conflict를 수정하다 어려움을 만나도 언제든지 rebase --abort로 rebase 작업을 취소할 수 있고, 심지어 그것 조차도 부담이 된다면, rebase 전에 임시 branch를 백업 용도로 만들었다가 rebase 후에 삭제하는 방법을 사용하기도 합니다. 세번째 강의에서처럼 지속적으로 conflict가 발생하는 경우라면, 아예 master에 임시 branch를 만들고 커밋별로 cherry-pick을 하기도 합니다. rebase와 cherry-pick으로 히스토리를 정리한 뒤 push하면 master 브랜치 관리자가 해당 branch를 확인후 fast-forward 방식만으로 master를 관리하기 쉽게 만들어준다는 장점이 있습니다." target="_blank">안신열님의 의견</a>