git 명령어 제대로 공부하기

Psj·2025년 3월 25일
0

git과 github

목록 보기
2/2

git merge

💡 Merge는 "내가 현재 있는 브랜치에 다른 브랜치를 합치는 것"이다.

git checkout feature/board
git merge develop

"develop의 내용을 feature/board 브랜치로 가져오겠다" 는 의미이다.

git checkout main
git merge develop

기능 개발이 끝난 후, develop 브랜치에 여러 기능이 모였다면
이제 그것을 배포용(main)에 합치는 것

즉, 이번 릴리스를 main에 반영하려고, develop의 모든 변경을 가져오는 것이다.

git rebase

merge는 "히스토리 그대로 보존", rebase는 "히스토리 깔끔하게 정리"

✅ 시작 상황 (공통 전제)

A -- B -- C     ← main
       \
        D -- E  ← feature
  • A, B, C: main 브랜치 커밋
  • D, E: feature 브랜치 커밋

이제 feature 브랜치를 main에 병합하고 싶다고 가정하자.


git merge (히스토리 보존, merge 커밋 생성)

git checkout main
git merge feature

📈 결과 히스토리:

A -- B -- C ----------- G      ← main
       \             /
        D -- E -----         ← feature

(G: merge commit)
  • G: merge 커밋 (자동 생성됨)
  • 브랜치 병합 흔적이 남고, 커밋 흐름이 비선형(트리 구조) 으로 보임
  • 히스토리 보존, 충돌 시점 명확

git rebase (히스토리 정리, 깔끔하게 만들기)

git checkout feature
git rebase main

📈 결과 히스토리:

A -- B -- C -- D' -- E'     ← feature
                          ↑
                       (replayed)
  • D', E': 기존 D, E를 새로 생성된 커밋으로 다시 쌓은 것 (커밋 ID 달라짐)
  • 이후 병합하면:
git checkout main
git merge feature

결과:

A -- B -- C -- D' -- E'     ← main, feature

선형 히스토리 완성!
더 깔끔하고 분석/리뷰가 쉬움

🔍 다이어그램 설명

🔁 Merge (병합)

  • D, E: feature 브랜치에서 작업한 커밋
  • G: main 브랜치에서 feature를 병합하면서 생긴 merge 커밋
  • 히스토리가 분기 + 병합 형태로 유지됨 (히스토리 복잡하지만 보존됨)

🔀 Rebase

  • D', E': feature 브랜치의 커밋이 main 브랜치 끝에 다시 쌓인 것 (새 커밋처럼 생성됨)
  • 히스토리가 일렬로 깔끔하게 정리됨
profile
Software Developer

0개의 댓글

관련 채용 정보