위의 그림에서는 experiment와 master두개의 브랜치가 나누어져있는 것을 볼 수 있다. 이 두개의 브랜치를 master브랜치에서 merge하게 되면 새로운 commit이 생기며 아래와 같이 합쳐지는 것을 볼 수 있다.
즉, 두개의 branch가 나누어졌다가 합쳐진다.
히스토리를 한 줄로 관리하고싶다면 Rebase나 Cherry-Pick을 사용하면된다.
Commit 전체를 merge하는게 아니라 1~2개만 골라서 merge하고 싶을 때 사용한다.
[master c7d4ca5] commit1
[master 4de8b93] commit2
[master ea017e9] commit3
다음과 같이 3개의 commit는데 이중 한개(commit2)만 cherry-pick해서 merge를 하고 싶다면
$ git cherry-pick 4de8b93
다음과 같이 해주면된다.
rebase는 cherry-pick을 여러번 해주는 것과 같다. 연결된 커밋을 그 순서대로 한방에 Cherry-pick 해온다.
다음 그림은 experiment와 master branch가 merge하여 새로운 commit이 생긴 경우이다.
$ git checkout experiment
$ git rebase master
다음과 같이 이동한 다음에 차례대로 적용하게 된다.
$ git checkout master
$ git merge experiment