1. 문제 상황
프로젝트 개발 도중 main 브랜치에서 작업을 하고 있었는데, 추가 기능은 별도의 새 브랜치에서 진행해야 하는 요구사항이 생겼습니다.
문제는 이미 main 브랜치에서 커밋을 완료한 상태였다는 점이었습니다.
아직 원격 저장소(GitLab)에는 push를 하지 않았지만,
이 커밋을 그대로 새로 만든 기능 브랜치에 옮겨야 했습니다.
정리하자면 :
- main에서 코드를 작성하고 커밋까지 완료
- 아직 push는 하지 않은 상태
- 새 브랜치를 만들어, 해당 커밋을 옮겨서 작업 이어가기
2. 해결 과정
먼저 원격 저장소에 새 브랜치를 만들고, 로컬에 가져왔습니다.
# 원격 저장소에서 새 브랜치 목록 가져오기
git fetch origin
# 새 브랜치로 체크아웃 (로컬에 없으면 자동생성)
git checkout -b feature/new-feature origin/feature/new-feature
하지만 여기에는 main에서 작업했던 커밋이 들어있지 않습니다.
따라서 main 브랜치에서 했던 커밋을 옮겨와야 했습니다.
이때 사용하는 명령어가 바로 cherry-pick입니다.

3. cherry-pick 사용하기
먼저 main으로 돌아옵니다.
git checkout main
main에서 옮기고 싶은 커밋의 해시를 확인합니다.
git log
원하는 커밋 해시값(예: zxcv12)을 복사한 뒤, 새 브랜치로 이동합니다.
git checkout feature/new-feature
새 브랜치에서 다음 명령어를 실행합니다.
git cherry-pick zxcv12
그러면 해당 커밋이 새 브랜치에 그대로 적용됩니다.
4. 최종 해결 방법
- 원격 브랜치 가져오기 (git fetch)
- 새 브랜치 체크아웃 (git checkout -b)
- main에서 작업한 커밋 해시 확인 (git log)
- 새 브랜치에서 cherry-pick으로 적용 (git cherry-pick 커밋해시)
이렇게 해서 원하는 커밋을 새 브랜치로 깔끔하게 옮길 수 있었습니다.
5. 정리
- git fetch : 원격 저장소의 최신 브랜치/커밋 정보 가져오기
- git checkout -b : 새 브랜치 생성 및 이동
- git log : 원하는 커밋 해시 확인
- git cherry-pig : 특정 커밋을 다른 브랜치로 적용
이번 경험으로, 잘못된 브랜치에서 커밋했더라도 당황하지 않고 원하는 브랜치로 옮길 수 있는 방법을 배웠습니다.