변경 사항 체리-픽
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
Git에서 체리-픽은 한 브랜치에서 단일 커밋을 가져와 다른 브랜치의 최신 커밋으로 추가하는 것입니다. GitLab UI를 사용하여 프로젝트 또는 프로젝트 포크에서 단일 커밋 또는 전체 머지 리퀘스트의 내용을 체리-픽합니다.
Git에서 체리-픽은 한 브랜치에서 단일 커밋을 가져와 다른 브랜치의 최신 커밋으로 추가하는 것입니다. 소스 브랜치의 나머지 커밋은 대상에 추가되지 않습니다. 전체 브랜치의 내용이 아닌 단일 커밋의 내용이 필요할 때 커밋을 체리-픽합니다. 예를 들어:
- 기본 브랜치에서 이전 릴리스 브랜치로 버그 수정을 백포트할 때.
- 포크에서 업스트림 리포지터리로 변경 사항을 복사할 때.
GitLab UI를 사용하여 프로젝트 또는 프로젝트 포크에서 단일 커밋 또는 전체 머지 리퀘스트의 내용을 체리-픽합니다.
이 예시에서 Git 리포지터리에는 두 개의 브랜치 develop과 main이 있습니다.
커밋 B는 main 브랜치의 커밋 E 이후에 develop 브랜치에서 체리-픽됩니다.
커밋 G는 체리-픽 후에 추가됩니다:
소스 코드 보기
%%{init: { "fontFamily": "GitLab Sans" }}%%
gitGraph
accTitle: Example of cherry-picking a commit
accDescr: Commit B is copied from the develop branch to the main branch while leaving the original branch unchanged.
commit id: "A"
branch develop
commit id:"B"
checkout main
commit id:"C"
checkout develop
commit id:"D"
checkout main
commit id:"E"
cherry-pick id:"B"
commit id:"G"
checkout develop
commit id:"H"
체리-픽된 커밋에 대한 시스템 노트 보기#
GitLab UI 또는 API에서 머지 커밋을 체리-픽하면 GitLab은 관련 머지 리퀘스트 스레드에 시스템 노트를 추가합니다.
시스템 노트는 머지 커밋을 체리-픽할 때만 생성됩니다. fast-forward 머지를 사용할 때는 시스템 노트가 생성되지 않습니다. 이는 개별 커밋 체리-픽과 머지 리퀘스트에서 모든 변경 사항 체리-픽 모두에 적용됩니다.
GitLab UI 또는 API 외부에서 체리-픽된 커밋도 시스템 노트를 생성하지 않습니다.
시스템 노트가 생성되면 형식은 [cherry-pick-commit] [USER] picked the changes into the branch [BRANCHNAME] with commit [SHA] [DATE]입니다:

시스템 노트는 새 커밋과 기존 머지 리퀘스트를 상호 연결합니다. 각 배포의 연결된 머지 리퀘스트 목록에는 체리-픽된 머지 커밋이 포함됩니다.
머지 리퀘스트의 모든 변경 사항 체리-픽#
머지 리퀘스트가 머지된 후 머지 리퀘스트에서 도입된 모든 변경 사항을 체리-픽할 수 있습니다. 머지 리퀘스트는 업스트림 프로젝트 또는 다운스트림 포크에 있을 수 있습니다.
사전 요구 사항:
-
머지 리퀘스트를 편집하고 리포지터리에 코드를 추가할 수 있는 프로젝트에 대한 권한이 있어야 합니다.
-
프로젝트는 머지 커밋 방법을 사용해야 하며, 이는 프로젝트의 Settings > Merge requests에서 설정됩니다.
GitLab 16.9 이상에서 fast-forward 커밋은 스쿼시되거나 머지 리퀘스트에 단일 커밋이 포함된 경우에만 GitLab UI에서 체리-픽할 수 있습니다. 언제든지 개별 커밋을 체리-픽할 수 있습니다.
[!note] fast-forward 머지 방법을 사용할 때는 시스템 노트가 생성되지 않습니다.
이를 수행하려면:
-
상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
-
왼쪽 사이드바에서 Code > Merge requests를 선택하고 머지 리퀘스트를 찾습니다.
-
머지 리퀘스트 보고서 섹션으로 스크롤하여 Merged by 보고서를 찾습니다.
-
보고서의 오른쪽 상단에서 Cherry-pick을 선택합니다:

-
대화 상자에서 체리-픽할 프로젝트와 브랜치를 선택합니다.
-
선택 사항. Start a new merge request with these changes를 선택합니다.
-
Cherry-pick을 선택합니다.
단일 커밋 체리-픽 {#cherry-pick-a-single-commit}#
GitLab 프로젝트의 여러 위치에서 단일 커밋을 체리-픽할 수 있습니다.
머지 커밋을 체리-픽하면 GitLab은 관련 머지 리퀘스트에 시스템 노트를 생성하여 작업을 추적합니다.
프로젝트의 커밋 목록에서#
프로젝트의 모든 커밋 목록에서 커밋을 체리-픽하려면:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Code > Commits를 선택합니다.
- 체리-픽하려는 커밋의 제목을 선택합니다.
- 오른쪽 상단에서 Options > Cherry-pick을 선택합니다.
- 체리-픽 대화 상자에서 체리-픽할 프로젝트와 브랜치를 선택합니다.
- 선택 사항. Start a new merge request with these changes를 선택합니다.
- Cherry-pick을 선택합니다.
리포지터리의 파일 보기에서#
프로젝트의 Git 리포지터리에서 파일을 볼 때 개별 파일에 영향을 미치는 이전 커밋 목록에서 체리-픽할 수 있습니다:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Code > Repository를 선택합니다.
- 커밋에 의해 변경된 파일로 이동합니다. 마지막 커밋 블록에서 History를 선택합니다.
- 체리-픽하려는 커밋의 제목을 선택합니다.
- 오른쪽 상단에서 Options > Cherry-pick을 선택합니다.
- 체리-픽 대화 상자에서 체리-픽할 프로젝트와 브랜치를 선택합니다.
- 선택 사항. Start a new merge request with these changes를 선택합니다.
- Cherry-pick을 선택합니다.
다른 부모 커밋 선택#
GitLab UI에서 머지 커밋을 체리-픽할 때 mainline은 항상 첫 번째 부모입니다. 다른 mainline으로 체리-픽하려면 명령줄을 사용합니다. 자세한 내용은 전체 브랜치의 내용 복사를 참조하세요.
