본문 바로가기
멋쟁이사자처럼 동아리/Git

Git 섹션 10 브랜치 보다 깊이 알기 "인프런" -PlusUltraCode-

by PlusUltraCode 2024. 7. 20.

Git 브랜치 관리 깊이 알기

1. Fast-Forward Merge

두 브랜치가 공통 조상을 가지고 있고, 한쪽 브랜치만 이후의 커밋이 있는 상황에서 Fast-Forward Merge를 사용하면 새로운 브랜치를 만들지 않고 늦은 브랜치를 최신 상태로 옮길 수 있습니다.

 
$ git merge --no-ff

--no-ff 옵션을 사용하면 Fast-Forward를 하지 않고, 새로운 커밋을 생성하여 병합합니다.

2. 3-Way Merge

3-Way Merge는 Y자 형태의 브랜치 구조에서, 서로 다른 세 개의 지점을 비교하여 병합 충돌을 해결하는 방법입니다. 서로 다른 두 브랜치와 공통 조상(branch base)을 비교하여 충돌을 해결합니다.

Cherry-Pick

특정 커밋만 선택적으로 다른 브랜치에 적용하는 방법입니다.

 
$ git cherry-pick cadfd026adb861cef437c612fe4f3ef519bf256f

특정 커밋(cadfd026adb861cef437c612fe4f3ef519bf256f)을 현재 체크아웃된 브랜치에 적용합니다.

Rebase --onto 사용하기

현재 브랜치가 3개가 있다고 가정하고, 첫 번째 브랜치를 세 번째 main 브랜치로 가져오고, 두 번째 브랜치는 merge하고 싶지 않은 경우에 사용합니다.

 
$ git rebase --onto main fruit citrus

fruit 브랜치를 기준으로 citrus 브랜치를 main 브랜치의 최상단에 위치시키는 명령어입니다. 이후 main 브랜치로 이동하여 citrus 브랜치를 병합합니다.

 
$ git switch main $ git merge citrus

Squash Merge

다른 브랜치의 커밋들을 하나의 커밋으로 병합하고 싶을 때 사용합니다.

 
$ git merge --squash root

이렇게 하면 staged 상태로 파일들이 추가되며, 이후 커밋을 진행합니다.

 
$ git commit

브랜치명 정하기

  • main: 실제 태그가 붙고 사용자들에게 보여줄 버전이 들어가는 가지입니다.
  • develop: 실제로 개발 과정에서 사용하는 브랜치입니다.
  • feature branches: develop 브랜치에서 따로 기능을 개발하는 브랜치들입니다. 기능 개발이 완료되면 다시 develop 브랜치로 병합합니다.
  • release branches: develop 브랜치에서 개발이 완료된 후, 버그 검증을 하는 구간입니다. 검증이 완료되면 main 브랜치로 출시합니다.
  • hotfixes: 출시된 버전에서 오류가 발생하면, 버그를 고치기 위해 사용하는 브랜치입니다.