[코딩애플] git 다양한 merge 방법

DDUDII·2023년 9월 11일

📗 git 다양한 merge 방법 복습

📎 3-way merge

  • main 브랜치 git log 출력해보면 3-way merge된 브랜치들의 commit 내역도 다 같이 출력됨

📎 fast-forward merge

  • 새로운 브랜치에만 commit 이 있고 기준이 되는 브랜치에 신규 commit이 없으면 자동으로 fast-forward merge가 발동

💡 포인트

  • 3-way merge, fast-forward merge를 해도 브랜치가 자동 삭제 되지 않음
  • git branch -d 브랜치이름:병합이 완료된 브랜치 삭제시
    git branch -D 브랜치이름: 병합하지 않은 브랜치 삭제시
    사용하여 브랜치 삭제 해주기

📎rebase and merge

  • rebase는 브랜치의 시작점을 다른 commit으로 옮겨주는 행위

  • rebase를 이용해서 신규브랜치의 시작점을 main 브랜치 최근 commit으로 옮긴 다음 fast-forward merge하는 것

  • 💡 결과는 squash and merge와 비슷한데 합쳐질 브랜치의 commit 내역이 전부 보존

  • 단점: 브랜치끼리 차이가 너무 많은 경우 rebase하면 충돌이 많이 발생할 수 있음

  • git switch 새로운브랜치: 새로운 브랜치로 먼저 이동
    git rebase main: main에 rebase해주기
    git switch main: main 브랜치로 이동
    git merge 새로운브랜치: 새로운 브랜치를 merge 시켜주기

📎squash and merge

  • 새 브랜치에 있던 코드 변경 사항들이 main 브랜치로 텔레포트

  • 💡 합쳐질 브랜치의 commit 내역을 하나로 합쳐서 main 브랜치에 신규 commit을 생성

  • main 브랜치의 git log 출력해볼 때 merge 완료된 브랜치의 commit 같은 것들은 출력되지 않음

  • git switch main: main 브랜치로 이동
    git merge --squash 브랜치명: squash 이용하여 merge
    git commit -m '메세지': 하나의 commit으로 main 브랜치에 생성

🔎 출처 코딩애플 git 강의

profile
코딩 공부 너무 많이 해서 두피가 뜨거워 지는중

0개의 댓글