반응형
현재 이런상태라고 할 때
- 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 |