gyue 님의 블로그
[Learn Git Branching] 종합 선물세트 본문
개요
이번 단계에서는 지금까지 학습한 Git 개념들을 종합적으로 활용하는 연습을 진행했다.
이전 단계에서는 cherry-pick, rebase 등을 통해 커밋을 이동시키거나 재구성하는 방법을 각각 따로 배웠다면,
이번 단계에서는 이 기능들을 함께 사용하여 “복잡한 작업 흐름을 원하는 형태로 만드는 것”에 집중했다.
특히 단순히 명령어를 사용하는 것이 아니라 어떤 상황에서 어떤 명령어를 선택해야 하는지 판단하는 과정이 중요했다.
딱 한 개의 커밋만 가져오기
개념
개발을 하다 보면 특정 브랜치에서 작업한 여러 커밋 중
일부 커밋만 다른 브랜치에 적용하고 싶은 상황이 자주 발생한다.
이때 전체 merge를 하면 불필요한 커밋까지 같이 들어오기 때문에 문제가 발생할 수 있다.
해결 방법
대표적인 방법은 두 가지이다.
1) cherry-pick
- 특정 커밋만 선택해서 가져오기
- 가장 직관적인 방법
2) rebase -i
- 필요한 커밋만 선택 가능
- 순서 변경 및 정리 가능
포인트
- merge는 전체를 가져온다.
- cherry-pick / rebase는 선택적으로 가져온다.
실무에서는 “선택적 적용”이 훨씬 중요하다





커밋 수정하기 (commit 수정 흐름)
상황
이미 커밋을 했는데 내용을 수정해야 하는 경우
해결 방법
1. rebase로 위치 이동
2. commit 수정
3. 다시 정렬
핵심 개념
- 커밋은 “고정된 데이터”가 아니다
- 필요하면 수정 가능하다




cherry-pick 활용 심화
이번 단계에서는 cherry-pick을 단순 사용이 아니라
여러 커밋을 조합해서 사용하는 방식까지 다뤘다.
특징
- HEAD 기준으로 커밋이 복사됨
- 여러 브랜치에서 원하는 작업만 가져올 수 있음
포인트
- cherry-pick은 히스토리를 “복사”한다
- 원본 구조는 유지된다.
즉, 안전하게 필요한 기능만 가져오는 방식






태그(Tag)
개념
태그는 특정 커밋을 가리키는 “고정된 포인터”이다.
특징
- 브랜치와 달리 움직이지 않음
- 특정 시점을 표시하는 용도
- 보통 버전 관리 (v1.0, v2.0)에 사용
핵심 차이
| 이동 | 가능 | 불가능 |
| 용도 | 작업 흐름 | 특정 시점 표시 |







git describe
개념
현재 커밋이 가장 가까운 태그 기준으로 어디 위치인지 보여주는 명령어
출력 형태
예:
의미:
- v1 태그 기준
- 2개의 커밋 뒤
- 현재 커밋 해시 C2
활용
- 현재 버전 위치 파악
- 배포 상태 확인
- 디버깅 시 유용







이번 단계에서 느낀 점
이번 단계는 지금까지 배운 Git 기능들을
단순히 “아는 것”에서 “조합해서 사용하는 단계”로 넘어가는 과정이었다.
특히 다음과 같은 점이 인상적이었다.
- Git은 단일 명령어보다 조합이 중요하다.
- cherry-pick과 rebase는 상황에 따라 선택해야 한다.
- 태그는 단순하지만 매우 중요한 기준점이다.
- Git은 작업 흐름을 설계하는 도구이다.
처음에는 어떤 명령어를 써야 할지 헷갈렸지만, “무엇을 하고 싶은지”를 먼저 생각하니
적절한 명령어가 자연스럽게 선택되기 시작했다.
정리
이번 단계에서 학습한 핵심은 다음과 같다.
- cherry-pick은 특정 커밋만 선택해서 가져온다.
- rebase는 커밋 흐름을 재구성한다.
- commit은 수정 및 재정렬이 가능하다.
- tag는 특정 시점을 고정하는 역할을 한다.
- git describe는 현재 위치를 설명해준다.
결국 Git은 단순한 명령어 집합이 아니라
“작업 흐름을 자유롭게 설계하는 시스템”이라는 것을 이해하게 되었다.
'블로그 & 기술문서' 카테고리의 다른 글
| [Learn Git Branching] Push & Pull - git 원격 저장소 (0) | 2026.04.04 |
|---|---|
| [Learn Git Branching] 고급 문제 (0) | 2026.04.04 |
| [Learn Git Branching] 코드 이리저리 옮기기 (0) | 2026.04.04 |
| [Learn Git Branching] 다음 단계로 (0) | 2026.04.04 |
| [Learn Git Branching] git 기본 (0) | 2026.04.04 |