gyue 님의 블로그

[Learn Git Branching] 코드 이리저리 옮기기 본문

블로그 & 기술문서

[Learn Git Branching] 코드 이리저리 옮기기

gyue 2026. 4. 4. 16:11

개요

이번 단계에서는 Git에서 커밋을 단순히 쌓는 것을 넘어,
원하는 커밋을 다른 위치로 옮기는 방법에 대해 학습해보았다.

이전까지는 commit, branch, checkout 등을 통해
Git의 기본적인 구조와 흐름을 이해하는 데 집중했다면, 이번 단계에서는 그 구조 위에서
특정 작업만 선택해서 이동시키는 방법”을 익히는 과정이었다.

특히 cherry-pick과 interactive rebase를 통해
원하는 커밋만 골라서 가져오거나, 커밋의 순서를 재구성하는 방법을 직접 확인할 수 있었다.

이를 통해 Git이 단순히 기록을 쌓는 도구가 아니라
작업 흐름을 유연하게 조작할 수 있는 강력한 도구라는 것을 느낄 수 있었다.


Cherry-pick (체리픽)

개념

git cherry-pick은
특정 커밋 하나(또는 여러 개)를 선택해서 현재 브랜치로 가져오는 명령어이다.

즉, 브랜치 전체를 합치는 것이 아니라 “딱 필요한 커밋만 복사해서 가져오는 방식”이다.

git cherry-pick <commit>
git cherry-pick <commit1> <commit2>
 

동작 방식

  • 선택한 커밋을 그대로 가져오는 것이 아니라 새로운 커밋으로 복사된다.
  • 기존 브랜치 구조는 유지된다.
  • 필요한 작업만 정확하게 가져올 수 있다.

특징

  • merge처럼 전체를 합치지 않는다.
  • rebase처럼 구조를 바꾸지 않는다.
  • 선택적 이동”에 최적화된 명령어이다.

사용 상황

  • 다른 브랜치에서 특정 기능만 가져오고 싶을 때
  • 버그 수정 커밋만 따로 적용하고 싶을 때
  • 전체 merge 없이 필요한 작업만 반영할 때


Interactive Rebase (인터랙티브 리베이스)

개념

git rebase -i는
여러 커밋을 원하는 방식으로 정리할 수 있는 명령어이다.

git rebase -i HEAD~n
 

최근 n개의 커밋을 대상으로 작업 가능


주요 기능

인터랙티브 리베이스에서는 다음 작업이 가능하다.

1. 커밋 순서 변경

  • 커밋의 순서를 자유롭게 재배열 가능

2. 커밋 선택/제거

  • 필요 없는 커밋 삭제 가능

3. 커밋 합치기 (squash)

  • 여러 커밋을 하나로 합칠 수 있다.

특징

  • 커밋 히스토리를 깔끔하게 정리 가능
  • 작업 흐름을 논리적으로 재구성 가능
  • 협업 전에 히스토리를 정리할 때 매우 유용


Cherry-pick vs Rebase 차이

목적 특정 커밋 선택 전체 흐름 재정렬
범위 개별 커밋 여러 커밋
구조 변화 없음 있음
사용 방식 필요한 것만 가져오기 히스토리 정리

  정리하면

  • cherry-pick → “이 커밋만 가져올래”
  • rebase → “전체 흐름을 다시 정리할래”

이번 단계에서 느낀 점

이번 학습을 통해 Git은 단순히 기록을 쌓는 도구가 아니라
작업을 원하는 방식으로 재구성할 수 있는 도구라는 것을 느꼈다.

특히 다음과 같은 점이 인상적이었다.

  • Git은 커밋을 자유롭게 이동시킬 수 있다
  • cherry-pick은 필요한 작업만 가져오는 데 매우 직관적이다
  • rebase는 히스토리를 깔끔하게 정리하는 데 강력하다

처음에는 rebase가 어렵게 느껴졌지만,
커밋을 다시 쌓는다”는 개념으로 이해하니 전체 흐름이 훨씬 명확하게 보이기 시작했다.


정리

이번 단계에서 학습한 핵심은 다음과 같다.

  • cherry-pick은 특정 커밋을 선택해서 가져오는 명령어이다.
  • rebase -i는 커밋 순서 변경, 삭제, 합치기가 가능하다.
  • Git은 작업 흐름을 자유롭게 재구성할 수 있다.
  • 커밋은 고정된 것이 아니라 이동 가능한 구조이다.

결국 Git의 핵심은
필요한 작업을 원하는 위치에 배치하는 능력”이라는 것을 이해하게 되었다.