[Git] Branch 깊이 알기

zzincode·2024년 12월 10일

Git GitHub

목록 보기
7/17
post-thumbnail

✚ Merge 종류

3-way-merge

두 브랜치의 공통 조상을 기준으로 각 브랜치의 변경 사항을 비교하여 새로운 병합 커밋을 생성하는 방식

Fastforward

한 쪽 브랜치에만 이후 커밋이 있을 경우 둘을 병합할 때 새로운 커밋 없이 브랜치 HEAD를 최신 커밋으로 이동시키는 방식

단점 : 작업 후 어떤 브랜치를 사용했고 언제 병합했는지 기록이 남지 않음

merge 방식 강제 변경

원래 브랜치에 변화가 없어도 Fastforwad하지 않고 3-way-merge 하려면

Git merge --no-ff (병합할 브랜치명)

🍒 다른 브랜치의 원하는 커밋 가져오기

cherry-pick 명령어 사용 - 원하는 브랜치만 복사하여 붙여넣는 형식

git cherry-pick (가져올 커밋의 해시)

📌 다른 브랜치에서 파생된 브랜치 옮겨붙이기

1. 브랜치의 commit들 스테이징


main에서 분기된 브랜치에서 분기된 브랜치를 main으로 옮기기

1. git rebase --onto (도착 브랜치) (출발 브랜치) (이동할 브랜치)
ex) git rebase --onto main branch1 branch2
2. git switch main
3. git merge (붙여 놓은 브랜치)

(도착브랜치)로 (출발브랜치)의 (이동브랜치)를 옮겨 붙이겠다.


🛍️ 다른 커밋들을 하나로 묶어 가져오기

1. 브랜치의 commit들 스테이징

git merge --squash (대상 브랜치)

2. commit 메세지 작성하여 변경사항 저장

git commit -m "커밋 메시지"
  • 일반 merge : A와 B 두 브랜치를 한 곳으로 이어붙임
  • merge --squash : B 브랜치의 마디들을 복사해다가 한 마디로 모아 A 브랜치에 붙임 (staged 상태로)

👥 협업을 위한 브랜치 활용

브랜치용도
main제품 출시/배포
develop다음 출시/배포를 위한 개발 진행
release출시/배포를 위한 개발 진행
feature기능 개발
hotfix긴급한 버그 수정

0개의 댓글