머지 리퀘스트 생성
GitLab v19.5Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
요약
머지 리퀘스트를 생성할 준비가 되면 워크플로에 맞는 방법을 사용합니다. 머지 리퀘스트를 생성하면 GitLab은 프로젝트의 브랜치 이름 규칙을 적용합니다. 머지 리퀘스트 제목은 서식 지원이 제한적입니다. 프로젝트의 상단 바에서 머지 리퀘스트를 생성할 수 있습니다.
머지 리퀘스트를 생성할 준비가 되면 워크플로에 맞는 방법을 사용합니다. 머지 리퀘스트는 다음 방법으로 생성할 수 있습니다.
- GitLab UI에서 생성합니다.
- 명령줄에서
glab mr명령 또는 푸시 옵션을 결합한 Git 명령으로 생성합니다. - Visual Studio Code 확장에서 생성합니다.
- 이메일을 보내서 생성합니다.
- 머지 리퀘스트 API로 생성합니다.
머지 리퀘스트를 생성하면 GitLab은 프로젝트의 브랜치 이름 규칙을 적용합니다. 머지 리퀘스트를 브랜치에 연결하려면 브랜치 이름 패턴을 따릅니다.
머지 리퀘스트 제목은 서식 지원이 제한적입니다.
상단 바에서#
프로젝트의 상단 바에서 머지 리퀘스트를 생성할 수 있습니다.
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 오른쪽 상단 모서리에서 Create new (+)와 New merge request를 선택합니다.
머지 리퀘스트 목록에서#
머지 리퀘스트 목록에서 머지 리퀘스트를 생성할 수 있습니다.
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Code > Merge requests를 선택합니다.
- 오른쪽 상단 모서리에서 New merge request를 선택합니다.
- 소스 브랜치와 대상 브랜치를 선택한 다음 Compare branches and continue를 선택합니다.
- New merge request 페이지에서 필드를 입력한 다음 Create merge request를 선택합니다.
각 브랜치는 열려 있는 머지 리퀘스트 하나에만 연결할 수 있습니다. 이 브랜치에 머지 리퀘스트가 이미 있으면 기존 머지 리퀘스트로 이동하는 링크가 표시됩니다.
커밋 페이지에서#
브랜치의 커밋 기록에서 머지 리퀘스트를 생성할 수 있습니다.
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Code > Commits를 선택합니다.
- 상단에서 Select Git revision 드롭다운 목록을 열고 기본 브랜치가 아닌 브랜치를 선택합니다.
- 오른쪽 위 모서리에서 Create merge request를 선택합니다.
- New merge request 페이지의 필드를 작성한 다음 Create merge request를 선택합니다.
브랜치에 열려 있는 머지 리퀘스트가 이미 있으면 버튼에 View open merge request가 대신 표시되며, 기존 머지 리퀘스트가 열립니다.
이슈에서#
개발 워크플로에서 머지 리퀘스트마다 이슈가 필요하다면, 이슈에서 바로 브랜치를 생성하여 과정을 단축할 수 있습니다. 새 브랜치와 이후의 머지 리퀘스트는 이 이슈와 관련된 것으로 표시됩니다. 자동 이슈 닫기가 비활성화되어 있지 않으면 머지 리퀘스트를 머지한 후 이슈가 자동으로 닫힙니다.
이슈에서 새 브랜치#
브랜치와 머지 리퀘스트를 동시에 생성하려면 다음 단계를 수행합니다.
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Plan > Work items를 선택한 다음 Type = Issue로 필터링하고 이슈를 선택합니다.
- 이슈 설명 하단으로 이동합니다.
- Create merge request > Create merge request and branch를 선택합니다.
- 대화 상자에서 제안된 브랜치 이름을 확인합니다. 이 이름은 프로젝트의 브랜치 이름 템플릿을 기반으로 합니다.
- 선택 사항. 브랜치 이름이 이미 사용 중이거나 다른 브랜치 이름이 필요하면 이름을 변경합니다.
- 소스 브랜치 또는 태그를 선택합니다.
- Create merge request를 선택합니다.
이슈의 기존 브랜치#
히스토리
- GitLab 17.11에서 도입됨.
사전 요구 사항:
- 브랜치가 이미 이슈에 연결되어 있어야 합니다.
- 프로젝트에서 머지 리퀘스트를 생성할 권한이 있어야 합니다.
Development에 브랜치가 이미 연결된 상태에서 머지 리퀘스트를 생성하려면 다음 단계를 수행합니다.
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Plan > Work items를 선택한 다음 Type = Issue로 필터링하고 이슈를 선택합니다.
- Development 섹션에서 연결된 브랜치를 찾습니다.
- 브랜치 작업 메뉴(⋮)를 선택합니다.
- Create merge request를 선택합니다.
- New merge request 페이지에서 필드를 입력한 다음 Create merge request를 선택합니다.
머지 리퀘스트 양식에는 이슈와 다시 연결하는 적절한 키워드가 미리 채워집니다.
태스크에서#
히스토리
- GitLab 17.8에서 도입됨.
팀이 이슈를 태스크로 나눈다면, 태스크에서 바로 브랜치를 생성하여 과정을 단축할 수 있습니다. 새 브랜치와 이후의 머지 리퀘스트는 이 태스크와 관련된 것으로 표시됩니다. 자동 이슈 닫기가 비활성화되어 있지 않으면 머지 리퀘스트를 머지한 후 태스크가 자동으로 닫힙니다.
태스크에서 새 브랜치#
사전 요구 사항:
- 태스크가 있는 프로젝트에 대한 Developer, Maintainer 또는 Owner 권한이 있어야 합니다.
브랜치와 머지 리퀘스트를 동시에 생성하려면 다음 단계를 수행합니다.
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Plan > Work items를 선택한 다음 Type = Task로 필터링하고 태스크를 선택합니다.
- 태스크 설명 하단으로 이동합니다.
- Create merge request를 선택합니다.
- 대화 상자에서 제안된 브랜치 이름을 확인합니다. 이 이름은 프로젝트의 브랜치 이름 템플릿을 기반으로 합니다.
- 선택 사항. 브랜치 이름이 이미 사용 중이거나 다른 브랜치 이름이 필요하면 이름을 변경합니다.
- 소스 브랜치 또는 태그를 선택합니다.
- Create merge request를 선택합니다.
태스크의 기존 브랜치#
히스토리
- GitLab 17.11에서 도입됨.
사전 요구 사항:
- 브랜치가 이미 태스크에 연결되어 있어야 합니다.
- 프로젝트에서 머지 리퀘스트를 생성할 권한이 있어야 합니다.
Development에 브랜치가 이미 연결된 상태에서 머지 리퀘스트를 생성하려면 다음 단계를 수행합니다.
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Plan > Work items를 선택한 다음 Type = Task로 필터링하고 태스크를 선택합니다.
- Development 섹션에서 연결된 브랜치를 찾습니다.
- 브랜치 작업 메뉴(⋮)를 선택합니다.
- Create merge request를 선택합니다.
- New merge request 페이지에서 필드를 입력한 다음 Create merge request를 선택합니다.
머지 리퀘스트 양식에는 태스크와 다시 연결하는 적절한 키워드가 미리 채워집니다.
Git 리포지터리가 비어 있을 때#
이슈나 태스크에서 머지 리퀘스트를 생성할 때 Git 리포지터리가 비어 있으면 GitLab은 다음을 수행합니다.
- 기본 브랜치를 생성합니다.
- 빈
README.md파일을 해당 브랜치에 커밋합니다. - 이슈 또는 태스크 제목을 기반으로 새 브랜치를 생성하고 그 브랜치로 이동시킵니다.
- 프로젝트가 Kubernetes 같은 배포 서비스로 구성되어 있으면
.gitlab-ci.yml파일 생성을 도와 자동 배포를 설정하도록 안내합니다.
자동 이슈 및 태스크 닫기#
생성한 브랜치의 이름이
이슈 또는 태스크 번호로 시작하면
GitLab은 이슈 또는 태스크와 머지 리퀘스트를 상호 연결하고, 머지 리퀘스트 설명에
닫기 패턴을
추가합니다. 대부분의 경우 Closes #ID 형태이며,
여기서 ID는 이슈 또는 태스크의 ID입니다. 프로젝트에 닫기 패턴이 구성되어 있으면
머지 리퀘스트가 머지될 때 이슈 또는 태스크가 닫힙니다.
닫기 패턴(Closes #123 등)으로 연결되거나 키워드(Related to #456 등)로
언급된 작업 항목은 머지 리퀘스트 사이드바의 Work items 위젯에
자동으로 표시됩니다. 자세한 내용은
머지 리퀘스트의 작업 항목을 참고합니다.
웹 편집기에서#
다음 작업을 수행할 때 웹 편집기로 머지 리퀘스트를 생성할 수 있습니다.
- 파일을 생성, 편집, 업로드 또는 삭제합니다.
- 디렉터리를 생성합니다.
브랜치를 생성할 때#
브랜치를 생성할 때 머지 리퀘스트를 생성할 수 있습니다.
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Code > Branches를 선택합니다.
- 브랜치 이름을 입력하고 New branch를 선택합니다.
- 파일 목록 위에서 Create merge request를 선택합니다. 머지 리퀘스트가 생성됩니다. 기본 브랜치가 대상이 됩니다.
- 필드를 입력하고 Create merge request를 선택합니다.
포크에서 작업할 때#
포크에서 메인 프로젝트로 기여하기 위해 머지 리퀘스트를 생성할 수 있습니다.
-
상단 바에서 Search or go to를 선택하고 포크를 찾습니다.
-
왼쪽 사이드바에서 Code > Merge requests를 선택한 다음 New merge request를 선택합니다.
-
Source branch에서 변경 사항이 있는 포크의 브랜치를 선택합니다.
-
Target branch에서 다음을 수행합니다.
-
포크가 아니라 업스트림 리포지터리를 선택합니다. 업스트림에 변경 사항을 자주 기여한다면 포크의 기본 대상을 설정하는 방안을 고려합니다.
-
업스트림 리포지터리에서 브랜치를 선택합니다.

[!note] 포크의 표시 수준이 상위 리포지터리보다 제한적이면 대상 브랜치는 포크의 기본 브랜치로 지정됩니다. 이는 포크의 비공개 정보가 노출되는 것을 방지합니다.
-
-
Compare branches and continue를 선택합니다.
-
Create merge request를 선택합니다. 머지 리퀘스트는 포크가 아니라 대상 리포지터리에 생성됩니다.
-
Developer, Maintainer 또는 Owner 권한이 있으면 원하는 담당자, 리뷰어, 레이블, 마일스톤을 추가합니다.
-
Submit merge request를 선택합니다.
머지 리퀘스트가 다른 리포지터리를 대상으로 하면 다음을 사용합니다.
- 대상 프로젝트의 승인 규칙.
- 포크의 CI/CD 구성, 리소스, 프로젝트 CI/CD 변수.
업스트림 프로젝트에서 CI/CD 파이프라인을 실행하려면 해당 프로젝트의 멤버여야 합니다. 포크에서 온 머지 리퀘스트에 대해 상위 프로젝트에서 머지 리퀘스트 파이프라인을 실행하면 모든 변수를 파이프라인에서 사용할 수 있습니다.
작업이 머지된 후 더 기여할 계획이 없으면 업스트림 리포지터리에서 포크 연결을 해제합니다.
기본 대상 프로젝트 설정#
기본적으로 포크에서 시작된 머지 리퀘스트는 포크가 아니라 업스트림 리포지터리를 대상으로 합니다. 업스트림 리포지터리 대신 포크한 리포지터리를 기본 대상으로 구성할 수 있습니다.
사전 요구 사항:
- 포크에서 작업하고 있어야 합니다.
- Developer, Maintainer 또는 Owner 권한이 있거나 프로젝트에서 머지 리퀘스트를 생성할 수 있어야 합니다.
- 업스트림 리포지터리가 머지 리퀘스트 생성을 허용해야 합니다.
- 포크의 표시 수준 설정이 업스트림 리포지터리와 같거나 덜 엄격해야 합니다. 예를 들어 포크가 비공개이고 업스트림이 공개이면 이 설정은 표시되지 않습니다.
이 작업을 수행하려면 다음 단계를 따릅니다.
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Settings > Merge requests를 선택합니다.
- Target project 섹션에서 기본 대상 프로젝트로 사용할 옵션을 선택합니다.
- Save changes를 선택합니다.
이메일을 보내서#
히스토리
- GitLab 18.6에서 Email a new merge request to this project가 Email merge request to this project로 이름이 변경됨.
GitLab으로 이메일 메시지를 보내 머지 리퀘스트를 생성할 수 있습니다. 머지 리퀘스트의 대상 브랜치는 리포지터리의 기본 브랜치입니다.
사전 요구 사항:
- 머지 리퀘스트는 업스트림 리포지터리가 아니라 현재 리포지터리를 대상으로 해야 합니다.
- GitLab 관리자가 수신 이메일을 구성해야 합니다. 이 설정은 GitLab.com에서 활성화되어 있습니다.
- GitLab 관리자가 이메일로 회신을 구성해야 합니다. 이 설정은 GitLab.com에서 활성화되어 있습니다.
- Developer, Maintainer 또는 Owner 권한이 있거나 프로젝트에서 머지 리퀘스트를 생성할 수 있어야 합니다.
이메일을 보내서 머지 리퀘스트를 생성하려면 다음 단계를 수행합니다.
-
상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
-
왼쪽 사이드바에서 Code > Merge requests를 선택합니다.
-
프로젝트에 머지 리퀘스트가 있으면 Email merge request to this project를 선택합니다.
-
대화 상자에서 표시된 이메일 주소를 복사합니다. 이 주소는 비공개로 유지합니다. 이 주소를 가진 사람은 누구나 본인인 것처럼 이슈나 머지 리퀘스트를 생성할 수 있습니다.
-
이메일을 열고 다음 정보로 메시지를 작성합니다.
- To 줄은 복사한 이메일 주소입니다.
- Subject는 소스 브랜치 이름입니다.
- 이메일 본문은 머지 리퀘스트 설명입니다.
-
커밋을 추가하려면 메시지에
.patch파일을 첨부합니다. -
이메일을 보냅니다.
머지 리퀘스트가 생성됩니다.
이메일 주소는 사용자마다 고유하므로 비공개로 유지해야 합니다. 이 이메일 주소에 접근할 수 있는 사람은 누구나 본인인 것처럼 머지 리퀘스트와 이슈를 생성할 수 있습니다. 이 비공개 이메일 주소가 공유되거나 유출되었다고 의심되면 즉시 토큰을 재설정합니다.
이메일로 머지 리퀘스트를 생성할 때 첨부 파일 추가#
패치를 이메일 첨부 파일로 추가하여 머지 리퀘스트에 커밋을 추가합니다.
- 패치의 총 크기는 2MB 이하여야 합니다.
- 패치로 인식되려면 첨부 파일 이름이
.patch로 끝나야 합니다. - 패치는 이름 순서대로 처리됩니다.
- 제목에 지정한 소스 브랜치가 없으면 리포지터리의
HEAD또는 기본 대상 브랜치에서 생성됩니다. 대상 브랜치를 수동으로 변경하려면/target_branch빠른 작업을 사용합니다. - 소스 브랜치가 이미 있으면 그 위에 패치가 적용됩니다.
관련 주제#
문제 해결#
이슈에 머지 리퀘스트 생성 옵션 없음#
다음의 경우 이슈에 Create merge request 옵션이 표시되지 않습니다.
- 같은 이름의 브랜치가 이미 있습니다.
- 이 브랜치에 머지 리퀘스트가 이미 있습니다.
- 프로젝트에 활성 포크 관계가 있습니다.
- 프로젝트가 비공개이고 이슈가 기밀입니다.
이 버튼이 표시되게 하는 한 가지 해결 방법은 프로젝트의 포크 관계를 제거하는 것입니다. 제거한 후에는 포크 관계를 복원할 수 없습니다. 프로젝트는 소스 프로젝트 또는 그 다른 포크와 머지 리퀘스트를 주고받을 수 없게 됩니다.
이메일 메시지를 처리할 수 없음#
머지 리퀘스트를 생성하기 위해 이메일을 보낼 때 업스트림 리포지터리를 대상으로 하면 GitLab은 다음 오류로 응답합니다.
Unfortunately, your email message to GitLab could not be processed.
You are not allowed to perform this action. If you believe this is in error, contact a staff member.