Cherry-Pick은 언제 사용할까? 💭

커밋을 다른 브랜치에 잘못하게 된 상황

github를 통해 형상관리를 수행하며 개발하다보면,
실수로 커밋을 다른 브랜치에 하게되어 문제가 발생하는 경우가 있다.

예를 들어 A 브랜치에 커밋해야하는 것을 B 브랜치에 잘못한 것이다.

이런 상황에서 어떤 해결방식을 생각할 수 있을까?



git cherry-pick 🍒

git에서 기본적으로 제공하는 명령어 중에는 체리픽이라는 것이 있다.

체리픽은 다른 브랜치에 커밋된 내역을 commit ID를 통해 내가 원하는 브랜치로 복사해오는 것이다.


🧐 Commit ID 확인 방법

그럼 Commit ID를 어떻게 알고 체리픽을 사용할 수 있는 걸까?


1. 깃허브에서 확인하는 방법

깃허브 레포지토리에서 해당 버튼을 클릭하면, 현재 브랜치에 커밋된 커밋 로그와 커밋 ID를 확인할 수 있다.


2. 터미널에서 확인하는 방법

git log

터미널로 깃에서 clone 해 온 레포지토리의 디렉토리에 접속 후,
위 명령어를 통해 커밋 로그를 확인할 수 있다.

그럼 이렇게 커밋 ID를 확인할 수 있다.


3. IDE(Integrated Development Environment)에서 확인하는 방법

VCS(Version Control System) 기능을 제공하는 IDE를 사용한다면,
IDE에서도 커밋ID를 확인할 수 있다.

추가로 VCS를 지원하는 대부분의 IDE들은 GUI를 사용해서 깃 활용도 가능하니,
잘 확인해서 편하게 사용해보자



실습 🎬

1. 복사받을 브랜치를 선택

git checkout 복사받을브랜치
  • 우선 다른 브랜치의 커밋 내용을 복사받아올 브랜치를 checkout한다.

2-1. 단독 커밋 복사

git cherry-pick 커밋ID
  • 다른 브랜치에 잘못 커밋한 커밋의 ID를 가져와서 현재 브랜치로 다른 커밋을 복사해온다.

2-2. 여러 커밋 복사

git cherry-pick 커밋ID 커밋ID
  • 다른 브랜치에 잘못 커밋한 여러 커밋의 ID를 가져와서 현재 브랜치로 다른 커밋을 복사해온다.
  • 띄어쓰기로 커밋ID를 구분한다.

2-3. 특정 범위의 커밋 복사

git cherry-pick 시작_커밋ID^..종료_커밋ID
  • 특정 범위(시작커밋ID ~ 종료커밋ID)의 커밋을 복사해온다.
  • 시작_커밋ID에는 복사 시작 지점, 종료_커밋ID에는 복사 종료 지점의 ID입력


주의점 🚨

만약 개인프로젝트 환경이 아니라, 협업 중인 경우.
그리고 하나의 브랜치에 여럿이서 작업을 수행하고 있는 경우
체리픽은 매우 신중하게 사용해야 한다.

무심코 사용한 체리픽으로 인해 다른 사람들이 작업 중인 곳에 충돌이 발생할 수도 있으며,
이러한 충돌은 업무 시간 상승으로 이어진다.

협업 중인 상태에서 버전관리 시스템을 다룰 때는, 항상 주의하며 수행하도록 하자!

profile
하나씩 천천히 깊이있게 쌓아가는 백엔드 개발자 최승준입니다.

0개의 댓글