병합 요청

Tier: Free, Premium, Ultimate Offering: GitLab.com, 자체 관리, GitLab Dedicated

병합 요청(MR)은 소스 브랜치에서 대상 브랜치로 변경 사항을 통합하기 위한 제안입니다.

병합 요청을 열 때, 병합하기 전에 변경 사항을 시각화하고 협업할 수 있습니다. 병합 요청에는 다음이 포함됩니다:

  • 요청 설명.
  • 코드 변경 및 인라인 코드 리뷰.
  • CI/CD 파이프라인에 대한 정보.
  • 토론 스레드를 위한 코멘트 섹션.
  • 커밋 목록.

병합 요청 생성

병합 요청을 생성하는 다양한 방법을 알아보세요.

병합 요청 템플릿 사용

병합 요청을 생성할 때, GitLab은 병합 요청에 데이터를 추가하기 위해 설명 템플릿의 존재 여부를 확인합니다. GitLab은 병합 요청에 첫 번째로 발견된 템플릿을 적용하며, 다음과 같은 위치를 확인합니다:

이름 프로젝트 UI
설정
그룹
default.md
인스턴스
default.md
프로젝트
default.md
템플릿 없음
표준 커밋 메시지 1 2 3 4 5
Closes #1234와 같은 이슈 종료 패턴을 포함한 커밋 메시지 1 2 3 4 5 *
이슈 ID가 접두사로 붙은 브랜치 이름(예: 1234-example) 1 * 2 * 3 * 4 * 5 *

참고: 별표(*)가 표시된 항목은 또한 이슈 종료 패턴이 추가됩니다.

병합 요청 보기

프로젝트, 그룹 또는 본인에 대한 병합 요청을 볼 수 있습니다.

프로젝트의 경우

프로젝트의 모든 병합 요청을 보려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 코드 > 병합 요청을 선택합니다.

또는, 키보드 단축키를 사용하려면 g + m을 누릅니다.

그룹 내 모든 프로젝트의 경우

그룹 내 모든 프로젝트의 병합 요청을 보려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. 코드 > 병합 요청을 선택합니다.

그룹에 하위 그룹이 포함된 경우 이 뷰에는 하위 그룹 프로젝트의 병합 요청도 표시됩니다.

본인에게 할당된 경우

본인에게 할당된 모든 병합 요청을 보려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택합니다.
  2. 드롭다운 목록에서 나에게 할당된 병합 요청을 선택합니다.

또는:

또는:

  1. 왼쪽 사이드바에서 코드 > 병합 요청 ()을 선택합니다.
  2. 드롭다운 목록에서 할당됨을 선택합니다.

병합 요청 목록 필터링

  • source-branch를 기반으로 한 필터링은 GitLab 16.6에서 도입되었습니다.
  • merged-by를 기반으로 한 필터링은 GitLab 16.9에서 도입되었습니다. mr_merge_user_filter 기능 플래그가 활성화된 경우에만 사용할 수 있습니다.

병합 요청 목록을 필터링하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 코드 > 병합 요청을 선택합니다.
  3. 병합 요청 목록 상단에서 검색 또는 결과 필터링을 선택합니다.
  4. 드롭다운 목록에서 필터링할 속성을 선택합니다. 몇 가지 예시:
    • 환경 또는 배포 날짜별로 필터링하기(#by-environment-or-deployment-date).
    • ID: #30 필터를 입력하여 병합 요청 30만 반환합니다.
    • 사용자 필터: 사용자 목록을 표시하려면 이러한 필터 중 하나를 입력(또는 드롭다운 목록에서 선택)합니다:
      • 승인자-By: 사용자가 이미 승인한 병합 요청. Premium 및 Ultimate 전용.
      • 승인자: 이 사용자가 승인할 수 있는 병합 요청. (자세한 내용은 Code owners를 읽어보세요). Premium 및 Ultimate 전용.
      • Merged-By: 이 사용자가 병합한 병합 요청.
      • 리뷰어: 이 사용자가 리뷰한 병합 요청.
  5. 속성을 필터링할 연산자를 선택하거나 입력합니다. 다음과 같은 연산자를 사용할 수 있습니다:
    • =: Is
    • !=: Is not
  6. 속성을 필터링할 텍스트를 입력합니다. 일부 속성은 None 또는 Any로 필터링할 수 있습니다.
  7. 여러 속성으로 필터링하려면 이 프로세스를 반복합니다. 여러 속성은 논리적 AND 연산자로 연결됩니다.
  8. 정렬 방향을 선택합니다. 내림차순을 위해서는 을, 오름차순을 위해서는 를 선택합니다.

환경 또는 배포 날짜별로

병합 요청을 환경이나 날짜와 같은 배포 데이터로 필터링하려면 다음을 입력하거나 드롭다운 목록에서 선택할 수 있습니다.

  • 환경
  • 배포 전
  • 배포 후

참고: 빠른 전진 병합 방법을 사용하는 프로젝트는 병합 커밋을 생성하지 않기 때문에 결과가 반환되지 않습니다.

환경별로 필터링할 때 드롭다운 목록에는 선택할 수 있는 모든 환경이 나열됩니다.

배포 전 또는 배포 후로 필터링할 때:

  • 날짜는 환경으로의 배포(병합 커밋에 의해 트리거된)가 성공적으로 완료된 시점을 가리킵니다.
  • 배포 날짜를 수동으로 입력해야 합니다.
  • 배포 날짜는 YYYY-MM-DD 형식을 사용하며, 날짜와 시간을 모두 지정하려면 두 겹 따옴표(")로 묶어야 합니다 ("YYYY-MM-DD HH:MM").

병합 요청에 변경 사항 추가

병합 요청에 변경 사항을 추가할 수 있는 권한이 있다면 변경의 복잡성과 개발 환경에 액세스해야 하는지에 따라 여러 가지 방법으로 기존의 병합 요청에 변경 사항을 추가할 수 있습니다.

  • 브라우저에서 Web IDE를 사용하여 . 키보드 단축키로 변경 사항을 편집합니다. 이 브라우저 기반 방법은 여러 파일을 편집하거나 Git 명령에 익숙하지 않은 경우에 사용합니다. Web IDE에서는 테스트를 실행할 수 없습니다.
  • Gitpod에서 변경 사항을 편집하려면, 파일을 편집하고 나서 테스트를 실행해야 하는 완전히 특징이 있는 환경이 필요한 경우입니다. Gitpod는 GitLab 개발 키트 (GDK)를 지원합니다. Gitpod를 사용하려면 사용자 계정에서 Gitpod를 활성화해야 합니다.
  • 명령줄에서 변경 사항 푸시하려면 Git과 명령줄을 익숙하게 다룰 수 있는 경우입니다.

병합 요청에 사용자 할당

병합 요청을 사용자에게 할당하려면 병합 요청에서 텍스트 영역에서 /assign @user 빠른 작업을 사용하거나 다음을 실행하세요:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 코드 > 병합 요청을 선택하고 병합 요청을 찾습니다.
  3. 오른쪽 사이드바에서 오른쪽 사이드바를 확장하고 담당자 섹션을 찾습니다.
  4. 편집을 선택합니다.
  5. 할당하려는 사용자를 검색하고 사용자를 선택합니다.

병합 요청이 사용자의 할당된 병합 요청 목록에 추가됩니다.

여러 사용자에게 할당

Tier: Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
  • 13.9에서 GitLab Premium으로 이동되었습니다.

GitLab은 병합 요청에 대해 여러 명의 책임자가 있는 경우, 병합 요청에 대해 여러 사용자를 할당할 수 있도록 합니다:

병합 요청에 대한 여러 사용자의 사이드바에 할당

여러 사용자를 병합 요청에 할당하려면 텍스트 영역에서 /assign @user 빠른 작업을 사용하거나 다음을 실행하세요:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 코드 > 병합 요청을 선택하고 병합 요청을 찾습니다.
  3. 오른쪽 사이드바에서 오른쪽 사이드바를 확장하고 담당자 섹션을 찾습니다.
  4. 편집을 선택하고 드롭다운 목록에서 할당할 모든 사용자를 선택합니다.

담당자를 삭제하려면 동일한 드롭다운 목록에서 사용자를 지웁니다.

병합 요청 닫기

병합 요청에 대한 작업을 영구적으로 중지하기로 결정하면, 병합 요청을 삭제하는 대신 병합 요청을 닫는 것이 좋습니다. 프로젝트에서 프로젝트에 대한 Developer, Maintainer 또는 Owner 역할을 갖는 작성자, 담당자 및 사용자는 프로젝트에서 병합 요청을 닫을 수 있습니다:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 코드 > 병합 요청을 선택하고 병합 요청을 찾습니다.
  3. 페이지 하단의 코멘트 상자로 스크롤합니다.
  4. 코멘트 상자 아래에서 병합 요청 닫기를 선택합니다.

GitLab은 병합 요청을 닫지만, 병합 요청, 해당 코멘트, 그리고 관련된 파이프라인에 대한 기록을 보존합니다.

병합 요청 삭제

GitLab에서는 병합 요청을 삭제하는 대신 닫는 것을 권장합니다. 병합 요청을 삭제를 되돌릴 수는 없습니다.

전제 조건:

  • 프로젝트의 Owner 역할이어야 합니다.

병합 요청을 삭제하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동를 선택하고 프로젝트를 찾습니다.
  2. 코드 > 병합 요청을 선택하고 삭제하려는 병합 요청을 찾습니다.
  3. 편집을 선택합니다.
  4. 페이지 하단으로 스크롤하고 병합 요청 삭제를 선택합니다.

소스 브랜치 병합 후 삭제

병합 요청 시에 소스 브랜치를 삭제할 수 있습니다:

  • 병합 요청을 생성할 때, 병합 요청 승인 시 소스 브랜치 삭제를 선택함으로써
  • 병합 요청을 병합할 때, Maintainer 역할을 가지고 있는 경우, 소스 브랜치 삭제를 선택함으로써

관리자는 프로젝트 설정에서 이 옵션을 기본값으로 설정할 수 있습니다.

대상 브랜치 병합 시 병합 요청 업데이트

Tier: Free, Premium, Ultimate Offering: Self-managed

플래그: Self-managed GitLab의 경우, 기본적으로 이 기능은 사용할 수 없습니다. 사용 가능하도록 하려면 관리자가 :rebase_when_retargetting_mrs 플래그를 활성화할 수 있습니다. GitLab.com 및 GitLab Dedicated의 경우, 이 기능을 사용할 수 없습니다.

병합 요청은 종종 서로 연결되어 있으며, 한 병합 요청이 다른 병합 요청에서 추가되거나 변경된 코드에 따라 달려 있습니다. 개별 병합 요청을 작게 유지하기 위해, GitLab은 대상 브랜치가 main으로 병합될 때 최대 4개의 열린 병합 요청을 업데이트할 수 있습니다. 예를 들어:

  • 병합 요청 1: feature-alphamain에 병합합니다.
  • 병합 요청 2: feature-betafeature-alpha에 병합합니다.

이러한 병합 요청이 동시에 열려 있고, 병합 요청 1(feature-alpha)이 main에 병합되면, GitLab은 병합 요청 2의 대상을 feature-alpha에서 main으로 업데이트합니다.

상호 연결된 내용 업데이트를 가진 병합 요청은 일반적으로 다음 중 하나의 방법으로 처리됩니다:

  • 우선 병합 요청 1을 main으로 병합합니다. 그런 다음 병합 요청 2를 main으로 다시 지정합니다.
  • 병합 요청 2를 feature-alpha로 병합합니다. 이제 feature-alphafeature-beta의 내용을 포함하는 업데이트된 병합 요청 1을 main으로 병합합니다.

이 기능은 병합 요청이 병합될 때에만 작동합니다. 병합 후 소스 브랜치 삭제를 선택해도 열린 병합 요청의 대상을 다시 지정하지는 않습니다. 이 개선 사항은 추가 제안되었습니다.

사이드바 작업 이동

이 기능 플래그가 활성화되면, 우측 상단에 있는 병합 요청 작업 ()에 포함되는 작업은 다음과 같습니다:

GitLab 16.0 및 이후에 비슷한 작업 메뉴가 문제, 인시던트 및 에픽에서 사용할 수 있습니다.

이 기능 플래그가 비활성화 된 경우, 이러한 작업은 오른쪽 사이드바에 있습니다.

병합 요청 워크플로우

팀에서 작업하는 소프트웨어 개발자를 위해:

  1. 새로운 브랜치를 확인하고, 병합 요청을 통해 변경 사항을 제출합니다.
  2. 팀에서 피드백을 수집합니다.
  3. 코드 품질 보고서로 코드를 최적화하는 구현 작업을 진행합니다.
  4. GitLab CI/CD에서 단위 테스트 보고서로 변경 사항을 검증합니다.
  5. 프로젝트와 호환되지 않는 라이선스의 종속성을 사용하지 않습니다. 라이선스 승인 정책을 요청합니다.
  6. 당신의 매니저로부터 승인을 요청합니다.
  7. 당신의 매니저는:
    1. 최종 검토를 포함하여 커밋을 푸시합니다.
    2. 병합 요청을 승인합니다.
    3. 자동 병합로 설정합니다 (이전에는 파이프라인 성공 시 병합).
  8. 변경 사항이 GitLab CI/CD를 통해 수동 작업으로 프로덕션 환경에 배포됩니다.
  9. 구현 사항이 성공적으로 고객에게 제공됩니다.

회사 웹 사이트를 위해 웹 개발자가 웹페이지를 작성하는 경우:

  1. 새로운 브랜치를 확인하고, 병합 요청을 통해 새 페이지를 제출합니다.
  2. 리뷰어로부터 피드백을 수집합니다.
  3. 리뷰 앱을 통해 변경 사항을 미리 보여줍니다.
  4. 웹 디자이너에게 구현을 요청합니다.
  5. 당신의 매니저로부터 승인을 요청합니다.
  6. 승인되면, 병합 요청이 스쿼시되어 병합되며, GitLab Pages로 스테이징에 배포됩니다.
  7. 프로덕션 팀은 병합 커밋을 프로덕션으로 체리픽합니다.

병합 요청의 활동 필터링

병합 요청의 이력을 이해하려면 해당 항목만 보이도록 활동 피드를 필터링하세요.

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 코드 > 병합 요청을 선택합니다.
  3. 병합 요청을 선택합니다.
  4. 활동으로 스크롤합니다.
  5. 페이지 오른쪽에서 활동 필터를 선택하여 필터 옵션을 표시합니다. 이전에 필터 옵션을 선택한 경우 이 필드에는 Activity + 5 more와 같이 선택한 내용을 요약한 내용이 표시됩니다.
  6. 표시하려는 활동 유형을 선택합니다. 옵션으로는 다음이 있습니다:

    • 담당자 및 리뷰어
    • 승인
    • 봇의 댓글
    • 사용자의 댓글
    • 커밋 및 브랜치
    • 편집
    • 레이블
    • 잠금 상태
    • 언급
    • 병합 요청 상태
    • 추적
  7. 선택 사항입니다. Sort ()를 선택하여 정렬 순서를 반대로 변경할 수 있습니다.

선택한 내용은 모든 병합 요청에 계속 유지됩니다. 또한 정렬 버튼을 클릭하여 정렬 순서를 변경할 수도 있습니다.

스레드 해결

병합 요청에서 대화를 마치고 싶을 때 스레드를 해결하세요.

해결되지 않은 스레드 수는 병합 요청 오른쪽 상단에 표시됩니다. 예를 들어 7 unresolved threads와 같이 표시됩니다.

병합 요청의 모든 미해결 스레드를 이슈로 이동

병합 요청에 여러 개의 미해결 스레드가 있는 경우 별도의 이슈를 생성하여 이를 개별적으로 해결할 수 있습니다:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 코드 > 병합 요청을 선택하고 병합 요청을 찾습니다.
  3. 병합 요청에서 오른쪽 상단에 있는 Unresolved threads 드롭다운 목록을 찾아 Thread options ()를 선택합니다.
  4. Resolve all with new issue를 선택합니다.
  5. 새 이슈의 필드를 작성하고 이슈 만들기를 선택합니다.

모든 스레드가 해결되고 병합 요청에서 새로 생성된 이슈로의 링크가 추가됩니다.

병합 요청의 특정 미해결 스레드를 이슈로 이동

병합 요청에서 특정한 미해결 스레드가 있는 경우 별도의 이슈를 생성하여 해당 스레드를 개별적으로 해결할 수 있습니다:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 코드 > 병합 요청을 선택하고 병합 요청을 찾습니다.
  3. 이동하려는 스레드를 병합 요청에서 찾습니다.
  4. 스레드의 마지막 답글 아래에서 Resolve thread 옆의 Thread to a new issue ()를 선택합니다.
  5. 새 이슈의 필드를 작성하고 이슈 만들기를 선택합니다.

해당 스레드가 해결되고 병합 요청에서 새로 생성된 이슈로의 링크가 추가됩니다.

모든 스레드가 해결될 때까지 병합 막기

모든 스레드가 해결될 때까지 병합 요청이 병합되지 않도록 설정할 수 있습니다. 이 설정이 활성화되면 병합 요청에서 Unresolved threads 카운터가 하나 이상의 스레드가 해결되지 않은 경우 주황색으로 표시됩니다.

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 병합 요청을 선택합니다.
  3. 병합 확인 섹션에서 모든 스레드가 해결되어야 함 확인란을 선택합니다.
  4. 변경 사항 저장을 선택합니다.

병합 요청을 자동으로 해결되도록 설정하기

병합 요청을 자동으로 설정하여 새로운 푸시로 인해 섹션이 오래되면 스레드를 자동으로 해결할 수 있습니다.

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 병합 요청을 선택합니다.
  3. 병합 옵션 섹션에서 병합 요청 차이 스레드가 오래될 때 자동으로 해결을 선택합니다.
  4. 변경 사항 저장을 선택합니다.

이제 푸시로 인해 섹션이 오래된 경우 스레드가 자동으로 해결됩니다. 변경되지 않는 라인의 스레드 및 최상위 해결 가능한 스레드는 해결되지 않습니다.

알림 및 할 일로 이동하기

DETAILs: Tier: Free, Premium, Ultimate Offering: Self-Managed

자체 관리 GitLab에서는 기본적으로 이 기능을 사용할 수 없습니다. 관리자가 notifications_todos_buttons라는 피처 플래그를 활성화하면 사용할 수 있습니다. GitLab.com 및 전용 GitLab에서는 이 기능을 사용할 수 없습니다.

이 기능 플래그가 활성화된 경우, 알림 및 할 일 항목 버튼이 페이지 오른쪽 상단으로 이동됩니다.

  • 병합 요청에서 이러한 버튼은 탭의 가장 오른쪽에 위치합니다.
  • 이슈, 사건 및 에픽의 경우, 이러한 버튼은 오른쪽 사이드바 상단에 위치합니다.

관련 주제