Git merge 방법과 Git Flow 전략

임동·2024년 1월 11일

1. Git에서 branch merge 방법과 각 방법의 특징

branch merge 방법은 대표적으로 fast-forward 방법과 3-way merge 방법이 있습니다.

  1. fast-forward
    fast-forward는 가장 기본적인 머지 방법으로, 서로 다른 두 개의 브랜치가 같은 조상을 갖고 있으면서 한쪽 브랜치만 커밋 이력이 있을 경우
    사용합니다. 브랜치를 서로 병합할 때 새로운 커밋을 만드는 것이 아닌 HEAD를 옮기는 방법이기 때문에 히스토리를 깔끔하게 관리할 수 있다는
    장점이 있지만 언제 병합했는지 확인하기 어렵다는 단점 또한 갖고 있습니다.
  1. 3-way merge
    3 way merge란 base 브랜치를 참고해서 다른 두 개의 브랜치를 비교하는 방법입니다.
    서로 다른 두 브랜치 중 한 명만 파일 수정을 했을 때 파일을 수정한 사람의 파일만을 머지하여 conflict를 내지 않고,
    두 브랜치가 같은 파일을 수정했을 때 둘 다 머지를 하여 충돌된 부분을 해결 후 커밋합니다.
    3 way merge는 2 way merge보다 conflict를 최소화하는 특징을 갖고 있기 때문에 3 way merge 방법을 사용하는 것이 더 좋습니다.

2. Git Flow 브랜치 전략

git branch를 쓰는 이유는 다른 브랜치를 만들지 않고 메인 브랜치 만으로 작업을 한다면 내가 작업중인 파일을 누가 건드릴 수도 있고, 히스토리를 알아보기 힘들게 될 것입니다.
이런 상황을 겪어야 하지 않으려면 메인 브랜치에서 새로운 브랜치를 만들고 메인 브랜치에 머지 하면 안전하게 개발이 가능합니다. 하지만 이런 브랜치 기능을 규칙 없이 사용하다보면 혼란을 겪을 수 있습니다. git 브랜치 전략은 브랜치를 효율적으로 관리하기 위한 워크플로우 입니다. 그 중 대표적으로 git flow 전략이 있습니다.

git flow 전략은 크게 main, develop, feature, release, hotfix로 나뉘어져 있습니다.

  1. main
    main 브랜치는 프로젝트 시작 시에 제일 처음 만드는 브랜치 입니다. 사용자에게 보여져야할 브랜치이며, 배포된 버전을 tag를 사용하여 표시합니다.
  1. develop
    develop 브랜치는 main 브랜치에서 checkout을 통해 만들어집니다. main으로 들어갈 코드들을 모아두는 곳입니다.
  1. feature
    featrue 브랜치는 develop 브랜치에서 checkout을 하고, 팀원마다 맡은 작업들을 따로 feature 브랜치를 만들어 작업하는 공간입니다.
    feature 브랜치에서 작업한 내용을 PR(Pull Request)를 통해 코드 리뷰와 수정을 하여 develop에 올리고 다른 팀원들은 PR한 작업물을 다시 pull 하는 방식으로 작업합니다.
  1. release
    release 브랜치는 develop 브랜치에서 checkout을 합니다. main 브랜치로 push 하기 전 PR을 통해 오류나 문제가 없는지 테스트를 하는 브랜치 입니다.
  1. hotfix
    hotfix 브랜치는 main 브랜치에서 checkout이 됩니다. main 브랜치에서 문제가 생겼을때 hotfix 브랜치를 만들고 main 브랜치에 다이랙트로 main에 넣는 브랜치 입니다.
profile
FRONTEND DEV.

0개의 댓글