낙서장이자 오답 노트이자 컨닝 페이퍼

Git을 공부해보자: Branch 보다 깊이 알기 본문

git & github

Git을 공부해보자: Branch 보다 깊이 알기

NangIn 2023. 11. 29. 17:40
인프런에서 "제대로 파는 Git & GitHub - by 얄코"를 보고 정리한 내용입니다!

 

다른 브랜치에서 원하는 커밋 가져오기

cherry-pick 명령어를 사용하면 특정 커밋만 복제해서 가져올 수 있다.

git cherry-pick (체리의 해시)
  • 체리 커밋을 main 브랜치로 가져오기: git cherry-pick 해당 해시 (main 브랜치에서 실행)

 

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

rebase --onto 옵션 사용

git rebase --onto (도착 브랜치) (출발 브랜치) (이동할 브랜치)
  1. fruit 브랜치에서 파생된 citrus 브랜치를 main 브랜치로 옮기기: git rebase --onto main fruit citrus
  2. citrus로 fast forward: git switch main 후, git merge citrus
  3. citrus 브랜치 삭제: git branch -d citrus

 

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

merge --squash 옵션 사용

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

일반 merge와의 차이 정리

일반 merge와 merge --squash는, 실행 후 코드의 상태는 같지만 내역 면에서 큰 차이가 있는 것이라고 이해하면 된다.

  • 일반 merge: A와 B 두 브랜치를 한 곳으로 이어 붙임
  • merge --squash: B 브랜치의 마디들을 복사해서 한 마디로 모아 A 브랜치에 붙임 (staged 상태로)

 

Git flow

협업을 위한 브랜칭 전략

사용되는 브랜치

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