merge와 rebase

·2024년 11월 8일

학원에서 또는 개인 프로젝트를 진행 할때 git rebase를 통해서 브랜치를 합쳐 왔었다.
입사 후 sourcetree의 병합(git merge)를 통해 브랜치를 합치고 있고 이에대한 차이 정리할겸 기록해 보고자한다.

※ sourcetree 사용 중

팀원1이 banana라는 브랜치를 만들어서 작업중이였는데 팀원2가 apple이라는 브랜치를 만들어서 작업하게 된 상황에서 팀원1브랜치(banana)에 팀원2(apple)의 작업내용을 합치려고 함

🟠 git merge

  1. 팀원1이 작업하던 내용을 커밋
  2. git banana 브랜치에 git push origin banana를 통해서 리모트 브랜치에 변경사항을 적용
  3. banana 브랜치에서 git merge apple을 통해서 apple 내용 병합 시켜준다.

결과

  • 원래의 커밋 히스토리가 유지 됨
  • 두 히스토리 결합 후 병합 커밋을 생성
  • 협업 중 사용 추천

🟠 git rebase

  1. 팀원1이 작업하던 내용을 커밋

  2. git banana 브랜치에 git push origin banana를 통해서 리모트 브랜치에 변경사항을 적용
    ※ 커밋 후 원격에 변동사항을 반영하지 않고 rabase 후 push 하는 것이 더 안정적

  3. banana 브랜치에서 git rebase apple을 통해서 apple 내용 병합 시켜준다.

결과

  • 원래의 커밋 히스토리가 선형으로 유지된다.
  • git apple 브랜치로 돌아갈 경우 rebase를 안한 경우 본인의 작업 내역만 남아있다.


🔍 궁금합니다만

Q) git merge전 리모트에 push 여부에 따른 차이점이 있을까?
A) NO

1. git merge전 리모트에 push한 상황
banana 브랜치가 원격에 이미 반영된 상태에서 merge를 수행하므로, 새로운 병합 커밋만 푸시하면 된다.

2. git merge전 리모트에 push하지 않은 상황
두 번째 경우에서는 banana 브랜치를 원격에 처음 푸시하는 상황이므로, 기존 커밋과 병합 커밋을 한 번에 푸시



🙏 개선해야 할부분이 있다면 알려주세요 피드백은 저를 성장하게 합니다.

profile
묵묵하게 나아가기

2개의 댓글

comment-user-thumbnail
2024년 11월 17일

현님 ~~ 오랜만이에요 (늘 글을 눈팅하고 있었답니다..?)
취뽀 축하드립니다😝

1개의 답글