세리프 따라잡기
git cherry-pick 사용법 본문
git cherry-pick이란 뭐야?
- git을 이용해 코드 관리를 하다보면 커밋을 다른 브랜치에 잘못 하거나, 요구사항이 바뀌어 필요 없는 커밋이 생기거나, 코드 의존성(dependency) 때문에 다른 사람의 커밋 중 일부를 가져와야 하는 경우가 종종 생기는데, 이때 사용하는 명령어가 cherry-pick
→ 통상 현업에서 체리픽이 사용되는 경우는 다른 브랜치에 있는 커밋(들)을 현재 작업하는 브랜치에 적용하고 싶을 때 사용 (이때, 커밋은 복사되는 느낌이지만 히스토리 측면으로는 새로운 커밋이 늘어나는 것이기 때문에, 항상 권장되는 방법은 아님)
사용법
지금 내가 X 브랜치라고 할 때,
브랜치 Y의 커밋 중 76ae30ef와 a0ee451c 를 골라, 내 브랜치에 적용하고자 한다면,
1. 이렇게 두 번 명령어를 통해서 적용하는 방법이 있고
git cherry-pick 76ae30ef
git cherry-pick a0ee451c
2. 명령어 뒤에 commit hash를 나열해 여러 개를 한꺼번에 적용하는 방법이 있다. (띄어쓰기로 구분)
git cherry-pick 76ae30ef a0ee451c
만약 76ae30ef 부터 a0ee451c 까지 세 커밋을 다 적용을 한다고 한다면, 다음의 방법을 사용하면 된다.
git cherry-pick 76ae30ef^..a0ee451c
이 방법은 git cherry-pick A^..B == A부터 B까지의 커밋을 다 체리픽 해온다는 뜻 [이때 A는 B보다 오래된 커밋이어야 함]
즉, 위의 명령어의 수행 결과는 76ae30ef 13af32cc a0ee451c 세 개의 커밋이 체리픽
+번외 방법
git cherry-pick 76ae30ef..a0ee451c
이 방법은 git cherry-pick A..B == A 이후의 커밋부터 B까지의 커밋을 다 체리픽 해온다는 뜻 [이 또한 A가 B보다 오래된 커밋 순]
즉, 위의 명령어의 수행 결과는 13af32cc a0ee451c 두 개의 커밋이 체리픽
에러 해결법 (충돌)
체리픽 했을 때, 컨플릭이 나는 상황이 발생할 수 있는데, 그 경우 다음과 같은 에러 메시지가 뜬다.
error: cherry-pick is already in progress
hint: try "git cherry-pick (--continue | --abort | --quit)"
fatal: cherry-pick failed
'Git' 카테고리의 다른 글
git pull request conflict 해결법 (0) | 2022.07.12 |
---|---|
git 원격저장소에 올라간 커밋 제거하기 (0) | 2022.07.10 |
gitignore 사용하는 방법 (0) | 2022.07.05 |
git branch의 모든 것 (0) | 2022.06.06 |
git bash here이 작동 안 할 때/ 안 뜰 때 (0) | 2021.03.08 |