# Merge
# main 브랜치로 이동
git checkout main
# feature 브랜치를 main에 병합
git merge feature
# Rebase
# feature 브랜치를 main 브랜치 위로 재배치
git checkout feature
git rebase main
# 충돌이 발생하는 경우, 수정 후
git add <파일>
git rebase --continue
같이 개발하는 동료가 늘어날 수록 머지 커밋이 기하급수적으로 늘어나 커밋로그가 지저분해질 가능성이 높음
rebase 사용에 관하여..
공유된 브랜치에서는 Rebase를 피하는 게 좋다고 하는데, Rebase는 히스토리를 변경하므로, 다른 사람이 작업 중인 브랜치에 적용하면 충돌이 발생할 수 있기 때문이다. (개인 브랜치에서만 사용하는 것이 안전)
하지만 반대 의견으로 깃 히스토리가 깔끔해 진다는 장점이 있기 때문에, 많은 사람들과 협업을 할 때 리베이스를 사용하는 것을 권장하는 팀이 많다는 이야기도 있다.
--force-with-lease (git push --force-with-lease) 강제 Push의 안전한 대안, 원격 브랜치가 예상한 상태일 때만 강제 Push를 허용함 (즉, 다른 사람이 원격 브랜치를 수정한 경우 Push 실패)
* Rebase 후, 로컬 브랜치의 히스토리가 원격 브랜치와 다르기 때문에, 일반적인 git push는 실패함 -> 따라서, Rebase 후에는 강제 Push(git push --force)를 사용하여 원격 브랜치의 히스토리를 로컬 브랜치와 동일하게 덮어씌워야함