반응형

현재 이런상태라고 할 때

  • A <-B(master)
  • A <-C(develop)

mater와 develop branch를 합치려면 merge 또는 rebase 할수 있음

merge를 한다는 것은 parent를 2개로 모시겠다는 것,

rebase는 특정한 branch를 base(parent의 의미로 봐도 무방할 듯, 혹은 공통조상)로 보고 그 이후 수정을 모두 복사해봐서 갖다붙여서 일렬로 만들겠다는 것

git checkout master, git rebase develp을 하면

  • A <- C(develop) <-B'(master) 가 된다.

git checkout develp, git rebase master를 하면

  • A <- B(master) <- C(develop)이 된다
git rebase [branch] 를 한다는 것은 [branch]까지는 base로 보존하고 그 이후에는 현재 checkout 되있는 애의 변경을 다 복사해서 갖다붙이겠다는 것

cherry-pick은 한개 commit만 rebase하는 것과 같은 효과를 낼수 있다. 다만 cherry-pick과 rebase는 수동태/능동태 처럼 주어/목적어가 반대로 사용된다. cherry-pick은 특정커밋을 가져오는 것이고 rebase는 특정 브랜치를 base로 만들어버리는 것

  • A <- C(develop) <-B'(master) 로 만드려면, 다음 2가지로 가능
    • git checkout develop, git cherry-pick (B No.)
    • git checkout master, git rebase develop
반응형

'git' 카테고리의 다른 글

git ignore  (0) 2019.09.03
git bash shorcuts: copy(ctrl+insert), paste(shift+insert)  (0) 2019.06.11
git tag  (0) 2019.06.07
git diff troubleshooting  (0) 2019.06.07
gerrit  (0) 2019.04.30

+ Recent posts