Rebase&Cherri-Pick

merge전

위의 그림에서는 experiment와 master두개의 브랜치가 나누어져있는 것을 볼 수 있다. 이 두개의 브랜치를 master브랜치에서 merge하게 되면 새로운 commit이 생기며 아래와 같이 합쳐지는 것을 볼 수 있다. merge후

즉, 두개의 branch가 나누어졌다가 합쳐진다.

히스토리를 한 줄로 관리하고싶다면 RebaseCherry-Pick을 사용하면된다.

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

rebase는 cherry-pick을 여러번 해주는 것과 같다. 연결된 커밋을 그 순서대로 한방에 Cherry-pick 해온다.

다음 그림은 experiment와 master branch가 merge하여 새로운 commit이 생긴 경우이다.

$ git checkout experiment
$ git rebase master

다음과 같이 이동한 다음에 차례대로 적용하게 된다.

$ git checkout master
$ git merge experiment

rebase후에 merge를 하게 되면 다음과 같이 한줄로 히스토리를 관리할 수 있는 것을 볼 수 있다.

Last updated