- Merge Request 생성하기
- Merge Request 보기
- Merge Request 디렉터리 필터링하기
- Merge Request에 변경 사항 추가
- 사용자를 Merge Request에 할당하기
- Merge Request 닫기
- 사이드바 작업 이동
- Merge Request 워크플로우
- Merge Request에서 활동 필터링
- 스레드 해결
- 이동 알림 및 할 일
- 관련 주제
Merge Request(Merge requests)
Merge Request(MR)은 소스 브랜치에서 대상 브랜치로 변경 사항을 통합하기 위한 제안입니다.
Merge Request을 열 때, Merge 전에 변경 내용을 시각화하고 협업할 수 있습니다. Merge Request에는 다음이 포함됩니다:
- 요청 설명.
- 코드 변경 및 인라인 코드 리뷰.
- CI/CD 파이프라인에 대한 정보.
- 토론 스레드를 위한 코멘트 섹션.
- 커밋 디렉터리.
Merge Request 생성하기
Merge Request을 생성하는 다양한 방법을 알아보세요.
Merge Request 템플릿 사용
Merge Request을 생성할 때, GitLab은 Merge Request에 데이터를 추가하기 위해 설명 템플릿의 존재 여부를 확인합니다. GitLab은 1부터 5까지의 순서로 이러한 위치를 확인하고, Merge Request에 처음 찾은 템플릿을 적용합니다:
이름 | 프로젝트 UI 설정 | 그룹default.md
| 인스턴스default.md
| 프로젝트default.md
| 템플릿 없음 |
---|---|---|---|---|---|
표준 커밋 메시지 | 1 | 2 | 3 | 4 | 5 |
이슈 종료 패턴을 포함한 커밋 메시지, 예를 들면 #1234 를 닫음
| 1 | 2 | 3 | 4 | 5 * |
이슈 ID로 시작하는 브랜치 이름, 예를 들면 1234-example
| 1 * | 2 * | 3 * | 4 * | 5 * |
Merge Request 보기
프로젝트, 그룹 또는 자신에게 대한 Merge Request을 볼 수 있습니다.
프로젝트의 경우
프로젝트의 모든 Merge Request을 보려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 코드 > Merge Request을 선택합니다.
또는, 키보드 바로 가기를 사용하려면 g + m을 누릅니다.
그룹 내 모든 프로젝트의 경우
그룹 내 모든 프로젝트의 Merge Request을 보려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
- 코드 > Merge Request을 선택합니다.
그룹에 서브그룹이 포함된 경우, 이 보기는 서브그룹 프로젝트의 Merge Request도 표시합니다.
본인에게 할당된 경우
본인에게 할당된 모든 Merge Request을 보려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택합니다.
- 드롭다운 디렉터리에서 내게 할당된 Merge Request을 선택합니다.
또는:
- 키보드 바로 가기를 사용하려면 Shift + m을 누릅니다.
또는:
- 왼쪽 사이드바에서 코드 > Merge Request ()을 선택합니다.
- 드롭다운 디렉터리에서 할당됨을 선택합니다.
Merge Request 디렉터리 필터링하기
Merge Request 디렉터리을 필터링하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 코드 > Merge Request을 선택합니다.
- Merge Request 디렉터리 위에 검색 또는 결과 필터링을 선택합니다.
- 드롭다운 디렉터리에서 필터링하려는 속성을 선택합니다. 몇 가지 예시:
- 환경 또는 배포 날짜별로 필터링.
-
ID:
#30
필터를 입력하여 30번 Merge Request만 반환합니다. - 사용자 필터: 다음 중 하나를 입력하여 사용자 디렉터리을 표시합니다:
- 승인자, 사용자가 이미 승인한 Merge Request에 대해. Premium 및 Ultimate 전용.
- 승인자, 이 사용자가 승인할 수 있는 Merge Request에 대해. (자세한 내용은 코드 소유자에 대해 읽어보세요). Premium 및 Ultimate 전용.
- 합병자, 이 사용자가 Merge한 Merge Request에 대해.
- 리뷰어, 이 사용자가 리뷰한 Merge Request에 대해.
- 필터링할 속성에 사용할 연산자를 선택하거나 입력합니다. 다음과 같은 연산자를 사용할 수 있습니다:
-
=
: 일치함 -
!=
: 일치하지 않음
-
- 속성을 필터링할 텍스트를 입력합니다. 몇 가지 속성은 None 또는 Any로 필터링할 수 있습니다.
- 여러 속성으로 필터링하려면 이 프로세스를 반복합니다. 여러 속성은 논리
AND
로 연결됩니다. - 정렬 방향을 선택합니다. 내림차순으로 정렬하려면 을, 오름차순으로 정렬하려면 을 선택합니다.
환경 또는 배포 날짜별로
환경 또는 날짜별로 Merge Request을 필터링하려면 다음을 입력하거나(또는 드롭다운 디렉터리에서 선택):
- 환경
- 배포 전
- 배포 후
환경으로 필터링하려면, 사용할 수 있는 모든 환경이 표시되는 드롭다운 디렉터리이 표시됩니다.
배포 전
또는 배포 후
로 필터링하려면:
- 날짜는 배포가 완료된 날짜(Merge 커밋으로 트리거된)를 가리킵니다.
- 배포 날짜를 매뉴얼으로 입력해야 합니다.
- 배포 일자는
YYYY-MM-DD
형식을 사용하며, 날짜와 시간을 모두 지정하려면 이중 인용부호("
)로 감싸야합니다("YYYY-MM-DD HH:MM"
).
Merge Request에 변경 사항 추가
Merge Request에 변경 사항을 추가할 권한이 있다면 변경 사항을 추가할 수 있습니다. 변경 내용의 복잡성과 개발 환경에 액세스해야 하는지 여부에 따라 여러 가지 방법으로 기존의 Merge Request에 변경 사항을 추가할 수 있습니다.
- 브라우저에서 Web IDE에서 변경 사항 편집을 하려면 . 키보드 바로 가기를 사용하세요. 이 브라우저 기반 방법은 여러 파일을 편집하거나 Git 명령에 익숙하지 않은 경우에 사용합니다. Web IDE에서 테스트를 실행할 수는 없습니다.
- Gitpod에서 변경 사항 편집을 하려면, 파일을 편집하고 나중에 테스트를 실행해야 하는 완전한 기능을 제공하는 환경이 필요한 경우입니다. Gitpod는 GitLab Development Kit (GDK)를 지원합니다. Gitpod를 사용하려면 사용자 계정에서 Gitpod를 활성화해야 합니다.
- 명령줄에서 변경 사항 푸시를 하려면 Git과 명령줄을 잘 알고 있어야 합니다.
사용자를 Merge Request에 할당하기
Merge Request을 사용자에게 할당하려면 Merge Request의 텍스트 영역에서 /assign @user
빠른 작업을 사용하거나 다음을 선택하세요:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 코드 > Merge Request을 선택하고 Merge Request을 찾습니다.
- 오른쪽 사이드바에서 사이드바 확장 후 담당자 섹션을 찾습니다.
- 편집을 선택합니다.
- 할당하려는 사용자를 검색하여 사용자를 선택하세요.
Merge Request이 사용자의 할당된 Merge Request 디렉터리에 추가됩니다.
여러 사용자 할당하기
- 13.9에서 GitLab Premium으로 이전되었습니다.
GitLab은 여러 명의 담당자를 Merge Request에 할당할 수 있도록 합니다:
여러 명의 담당자를 Merge Request에 할당하려면 텍스트 영역에서 /assign @user
빠른 작업을 사용하거나 다음을 선택하세요:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 코드 > Merge Request을 선택하고 Merge Request을 찾습니다.
- 오른쪽 사이드바에서 사이드바 확장 후 담당자 섹션을 찾습니다.
- 편집을 선택하고 드롭다운 디렉터리에서 Merge Request을 할당하려는 모든 사용자를 선택하세요.
담당자를 제거하려면 동일한 드롭다운 디렉터리에서 사용자를 지웁니다.
Merge Request 닫기
Merge Request에 대해 영구적으로 작업을 중단하기로 결정하면 Merge Request을 삭제하는 대신 GitLab에서는 Merge Request을 닫기를 권장합니다. 프로젝트에 대한 작성자 및 담당자와 Developer, Maintainer 또는 Owner 역할을 하는 사용자는 프로젝트 내에서 Merge Request을 닫을 수 있습니다:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 코드 > Merge Request을 선택하고 Merge Request을 찾습니다.
- 페이지 아래쪽의 코멘트 상자로 스크롤합니다.
- 코멘트 상자 다음에 Merge Request 닫기를 선택합니다.
GitLab은 Merge Request을 닫지만 Merge Request, 해당 코멘트 및 관련 파이프라인의 기록을 보존합니다.
Merge Request 삭제
GitLab에서는 Merge Request을 삭제하는 대신 닫는 것을 권장합니다. 삭제한 Merge Request을 되돌릴 수 없습니다.
필수 조건:
- 프로젝트의 소유자 역할이어야 합니다.
Merge Request을 삭제하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 코드 > Merge Request을 선택하고 삭제하려는 Merge Request을 찾습니다.
- 편집을 선택합니다.
- 페이지 아래로 스크롤하여 Merge Request 삭제를 선택합니다.
Merge 시 소스 브랜치 삭제
Merge Request의 소스 브랜치를 삭제할 수 있습니다:
- Merge Request을 만들 때, Merge Request 승인 시 소스 브랜치 삭제를 선택함으로써.
- Merge Request을 Merge할 때, Maintainer 역할이 있으면 소스 브랜치 삭제를 선택함으로써.
관리자는 이 옵션을 프로젝트 설정에서 기본값으로 설정할 수 있습니다.
대상 브랜치가 Merge될 때 Merge Request 업데이트하기
- 16.9에서 GitLab 16.10으로 변경된 연쇄 Merge Request은 새 대상 브랜치로 자동 재베이스되도록 변경되었습니다.
- 16.10 버전에서는 연쇄 Merge Request은 더 이상 대상 브랜치를 자동으로 재베이스하지 않습니다
:rebase_when_retargetting_mrs
라는 플래그로 관리자 피처 플래그에 의해 기본적으로 비활성화됩니다.
:rebase_when_retargetting_mrs
라는 피처 플래그를 활성화할 수 있습니다.
GitLab.com 및 GitLab Dedicated의 경우, 이 기능을 사용할 수 없습니다.Merge Request은 종종 서로 연결되어 있으며 한 Merge Request에 대한 코드가 다른 Merge Request에 의존하는 경우가 많습니다. 개별 Merge Request을 작게 유지하기 위해 GitLab은 main
으로 대상 브랜치가 Merge될 때 최대 4개의 열린 Merge Request을 업데이트할 수 있습니다. 예를 들어:
-
Merge Request 1:
feature-alpha
를main
에 Merge합니다. -
Merge Request 2:
feature-beta
를feature-alpha
에 Merge합니다.
이러한 Merge Request이 동시에 열려 있는 경우, Merge Request 1(feature-alpha
)이 main
에 Merge되면 GitLab은 Merge Request 2의 대상을 feature-alpha
에서 main
으로 업데이트합니다.
연결된 내용을 갖는 Merge Request은 일반적으로 다음 중 하나의 방식으로 처리됩니다:
- Merge Request 1이 먼저
main
에 Merge됩니다. 그런 다음 Merge Request 2가main
으로 리타깃팅(retarget)됩니다. - Merge Request 2가
feature-alpha
에 Merge됩니다. 업데이트된 Merge Request 1은 이제feature-alpha
및feature-beta
의 내용을 포함하고 있으며 이를main
에 Merge합니다.
이 기능은 Merge Request이 Merge될 때에만 작동합니다. Merge 후 소스 브랜치 제거를 선택하는 것은 열린 Merge Request을 리타깃팅(retarget)하지 않습니다. 이 개선 사항은 추가 제안되었습니다.
사이드바 작업 이동
- GitLab 14.10에 도입됨 플래그
moved_mr_sidebar
와 함께. 기본적으로 활성화됨.- GitLab 16.0에서 변경됨 이제 이슈, 사건 및 에픽에서도 작업이 이동되었습니다.
이 피처 플래그가 활성화되면 오른쪽 상단에, Merge Request 작업 ()에 다음 작업이 포함됩니다.
GitLab 16.0 및 이후에는 유사한 작업 메뉴가 이슈, 사건 및 에픽에서도 사용 가능합니다.
이 피처 플래그가 비활성화되면 이러한 작업은 오른쪽 사이드바에 있습니다.
Merge Request 워크플로우
팀에서 작업하는 소프트웨어 개발자의 경우:
- 새 브랜치를 체크아웃하고 변경 사항을 Merge Request을 통해 제출합니다.
- 팀으로부터 피드백을 수집합니다.
- 코드 품질 보고서를 사용하여 코드를 최적화하고 구현에 작업합니다.
- GitLab CI/CD에서 단위 테스트 보고서로 변경 사항을 검증합니다.
- 프로젝트와 호환되지 않는 라이선스를 사용하는 의존성을 피합니다.
- 관리자로부터 승인을 요청합니다.
- 당신의 관리자는:
- 최종 검토후 커밋을 푸시합니다.
- Merge Request을 승인합니다.
- 자동 Merge으로 설정합니다 (이전 이름은 파이프라인 성공 시 Merge).
- 변경 사항이 프로덕션에 배포됩니다. GitLab CI/CD에서 매뉴얼 작업으로 실행됩니다.
- 구현 사항이 성공적으로 고객에게 배송되었습니다.
회사 웹사이트의 웹 개발자인 경우:
- 새 브랜치를 체크아웃하고 새 페이지를 Merge Request을 통해 제출합니다.
- 리뷰어로부터 피드백을 수집합니다.
- 리뷰 앱으로 변경 사항을 미리보기합니다.
- 웹 디자이너에게 구현을 요청합니다.
- 관리자로부터 승인을 요청합니다.
- 승인되면, Merge Request이 Merge되고 스쿼시됩니다, 그리고 GitLab Pages로 스테이징에 배포됩니다.
- 프로덕션 팀은 Merge 커밋을 프로덕션으로 체리픽합니다.
Merge Request에서 활동 필터링
- GitLab 15.11에 도입됨 플래그
mr_activity_filters
와 함께. 기본적으로 비활성화됨.- GitLab 16.0에서 GitLab.com에서 활성화됨.
- GitLab 16.3에서 Self-managed에서 활성화됨. 기본 설정으로 활성화됨.
- GitLab 16.5에서 GA(General Availability).
mr_activity_filters
피처 플래그가 제거됨.- 활동 필터링은 GitLab 16.9에 도입됨되었습니다.
Merge Request의 이력을 이해하려면 활동 피드를 필터링하여 관련 항목만 표시합니다.
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 코드 > Merge Request을 선택합니다.
- Merge Request을 선택합니다.
- 활동으로 스크롤합니다.
- 페이지 오른쪽에 활동 필터를 선택하여 필터 옵션을 표시합니다. 이전에 필터 옵션을 선택한 경우, 이 필드에서 활동 + 더 보기 5개와 같은 요약이 표시됩니다.
-
표시하려는 활동 유형을 선택합니다. 옵션으로는 다음이 있습니다:
- 담당자 및 리뷰어
- 승인
- 봇의 코멘트
- 사용자의 코멘트
- 커밋 및 브랜치
- 편집
- 라벨
- 잠금 상태
- 언급
- Merge Request 상태
- 추적
- 선택 사항. 정렬 ()을 선택하여 정렬 순서를 반전합니다.
선택 사항은 모든 Merge Request에 계속 유지됩니다. 또한 오른쪽의 정렬 버튼을 클릭하여 정렬 순서를 변경할 수도 있습니다.
스레드 해결
Merge Request에서 대화를 마치고 싶을 때, 스레드를 해결.
해결되지 않은 스레드 수는 Merge Request의 오른쪽 상단에 표시됩니다. 7개의 미해결된 스레드와 같이 표시됩니다.
Merge Request의 모든 미해결된 스레드를 이슈로 이동
Merge Request에서 여러 개의 미해결된 스레드가 있는 경우, 별도로 이를 해결하기 위해 이슈를 생성할 수 있습니다:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 코드 > Merge Request을 선택하고 Merge Request을 찾습니다.
- Merge Request 안에서, 오른쪽 상단에서 미해결된 스레드 드롭다운 디렉터리을 찾아 스레드 옵션 ()을 선택합니다.
- 새 이슈로 모두 해결을 선택합니다.
- 새로운 이슈의 필드를 작성하고 이슈 생성을 선택합니다.
모든 스레드는 해결되었으며, Merge Request에서 새로 생성된 이슈로의 링크가 추가됩니다.
Merge Request의 미해결된 스레드를 이슈로 이동
Merge Request에서 특정 미해결 스레드가 하나 있을 때, 이를 별도로 해결하기 위해 이슈를 생성할 수 있습니다:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- Code > Merge requests를 선택하고 Merge Request을 찾습니다.
- Merge Request에서 이동하려는 스레드를 찾습니다.
- 스레드의 마지막 답글 아래에서 스레드 해결 옆에 스레드를 해결하기 위한 이슈 생성 ()를 선택합니다.
- 새로운 이슈의 필드를 작성한 후 이슈 생성을 선택합니다.
해당 스레드는 해결으로 표시되며, Merge Request에서 새로 생성된 이슈로 링크가 추가됩니다.
모든 스레드가 해결될 때까지 Merge 방지
모든 스레드가 해결될 때까지 Merge Request의 Merge을 방지할 수 있습니다. 이 설정이 활성화되면, Merge Request의 미해결 스레드 계산기는 적어도 하나의 스레드가 해결되지 않았을 때 주황색으로 표시됩니다.
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- Settings > Merge requests를 선택합니다.
- Merge 확인 섹션에서 모든 스레드를 해결해야 함 확인란을 선택합니다.
- 변경 사항 저장을 선택합니다.
Merge Request의 스레드가 오래되면 자동으로 해결
Merge Request에 대한 스레드를 자동으로 해결하도록 설정할 수 있습니다. 새로운 푸시로 라인이 수정될 때 스레드를 자동으로 해결합니다.
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- Settings > Merge requests를 선택합니다.
- Merge 옵션 섹션에서 스레드가 오래된 경우 자동으로 Merge Request 차이 스레드 해결을 선택합니다.
- 변경 사항 저장을 선택합니다.
푸시로 인해 더 이상 사용되지 않는 경우 이제 스레드가 해결됩니다. 변경되지 않는 라인의 스레드 및 최상위로 해결 가능한 스레드는 해결되지 않습니다.
이동 알림 및 할 일
DETAILs: Tier: Free, Premium, Ultimate Offering: Self-managed
- GitLab 16.5 버전에서 도입되었으며,
notifications_todos_buttons
라는 플래그로 기본값은 비활성화됩니다.- 문제, 인시던트 및 에픽도 업데이트되었습니다.
notifications_todos_buttons
라는 플래그를 활성화해야 합니다.
GitLab.com 및 전용 GitLab에서는 이 기능을 사용할 수 없습니다.이 피처 플래그가 활성화되면, 알림 및 할 일 항목 버튼이 페이지 오른쪽 상단으로 이동합니다.
- Merge Request에서 이러한 버튼은 탭의 가장 오른쪽에 위치합니다.
- 문제, 인시던트 및 에픽에서 이러한 버튼은 오른쪽 사이드바 상단에 위치합니다.
관련 주제
- Merge Request 생성
- Merge Request 검토
- Merge Request의 권한 부여](authorization_for_merge_requests.md)
- 테스트 및 보고서
- GitLab 키보드 단축키
- 코멘트 및 스레드
- 코드 변경 제안
- CI/CD 파이프라인
- Merge Request을 위한 푸시 옵션