낙서장이자 오답 노트이자 컨닝 페이퍼
Git을 공부해보자: Branch 보다 깊이 알기 본문
인프런에서 "제대로 파는 Git & GitHub - by 얄코"를 보고 정리한 내용입니다!

다른 브랜치에서 원하는 커밋 가져오기
cherry-pick 명령어를 사용하면 특정 커밋만 복제해서 가져올 수 있다.
git cherry-pick (체리의 해시)
- 체리 커밋을 main 브랜치로 가져오기: git cherry-pick 해당 해시 (main 브랜치에서 실행)

다른 브랜치에서 파생된 브랜치 옮겨 붙이기
rebase --onto 옵션 사용
git rebase --onto (도착 브랜치) (출발 브랜치) (이동할 브랜치)
- fruit 브랜치에서 파생된 citrus 브랜치를 main 브랜치로 옮기기: git rebase --onto main fruit citrus
- citrus로 fast forward: git switch main 후, git merge citrus
- citrus 브랜치 삭제: git branch -d citrus

다른 커밋들을 하나로 묶어 가져오기
merge --squash 옵션 사용
git merge --squash (대상 브랜치)
- root 브랜치의 마디들을 하나로 묶어 main 브랜치로 가져오기: git merge --squash root
- 변경 사항들 스테이지 되어 있음: git commit 후 메시지 입력
- root 브랜치는 남아있음, 필요에 따라 삭제

일반 merge와의 차이 정리
일반 merge와 merge --squash는, 실행 후 코드의 상태는 같지만 내역 면에서 큰 차이가 있는 것이라고 이해하면 된다.
- 일반 merge: A와 B 두 브랜치를 한 곳으로 이어 붙임
- merge --squash: B 브랜치의 마디들을 복사해서 한 마디로 모아 A 브랜치에 붙임 (staged 상태로)
Git flow
협업을 위한 브랜칭 전략

사용되는 브랜치
| 브랜치 | 용도 |
| main | 제품 출시/배포 |
| develop | 다음 출시/배포를 위한 개발 진행 |
| release | 출시/배포 전 테스트 진행(QA) |
| feature | 기능 개발 |
| hotfix | 긴급한 버그 수정 |
'git & github' 카테고리의 다른 글
| Git을 공부해보자: Git 추가 기능 (Hooks, Submodules) (0) | 2023.11.30 |
|---|---|
| Git을 공부해보자: 분석과 디버깅(log, diff, blame, bisect) (0) | 2023.11.30 |
| Git을 공부해보자: 태그 (1) | 2023.11.29 |
| Git을 공부해보자: 취소, 되돌리기 깊이 알기 (1) | 2023.11.29 |
| Git을 공부해보자: 프로답게 커밋 관리하기(hunk별 관리, stash, 커밋수정, 과거 커밋 관리) (1) | 2023.11.29 |