브랜치를 통합하는 방법은 merge와 rebase가 있다. 예를 들어 각각의 차이점은 아래와 같은 작업 흐름을 가지는 브랜치를 예를 들어 설명하면 다음과 같다.

rebase

커밋들을 모아서 복사한 뒤, 다른 곳에 떨궈 놓는 것.
rebase를 하면 커밋들의 흐름을 보기 좋게 한 줄로 만들 수 있다는 장점이 있음.
즉, 저장소의 커밋로그와 이력이 깨끗해진다.
하지만, 정확한 이력을 관리해야하는 경우에는 사용하면 안된다.

git checkout bugFix
git rebase master

merge

변경 내용의 이력이 모두 그대로 남아 있기 때문에 이력이 복잡해진다.

git checkout bugFix
git merge master

만약, 여러 개의 커밋 이력을 하나의 커밋이력으로 합쳐서 merge하고 싶은 경우에는 --squash 매개변수를 추가한다.

git checkout bugFix
git merge --squash master

작업 되돌리기

변경한 작업을 되돌리기 위한 방법으로 resetrevert가 있다.
예를 들어 아래와 같은 작업 흐름이 있을 때,

Reset

예전의 커밋을 가리키도록 이동시키는 방식으로 변경 내역을 되돌린다.
즉, 애초에 커밋하지 않은 것처럼 예전 커밋으로 브랜치를 이동한다.

git reset HEAD~2

Revert

예전 커밋으로 되돌렸음에 대한 변경 이력 남긴다.
가급적 원격 저장소에는 이력 관리를 위해 revert를 사용하여 되돌리는 것을 권장한다.

git revert HEAD

Commit 변경하기

cherry-pick

다른 브랜치의 전체 commit을 가져오지 않고 특정 commit 내역만을 가져와서 반영하고자 하는 경우에 사용한다.

예를 들어 아래와 같은 브랜치가 존재할 때에
master 브랜치에 bugFix에 반영된 내용 중, 특정 커밋만 반영하려고 하는 경우에 아래와 같이 작업할 수 있다.

git checkout master
git cherry-pick C4