Merge Request 기능
소스 브랜치에서 타깃 브랜치로 변경 사항을 통합하기 위해 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 |
Closes #1234 와 같은 이슈 닫기 패턴이 있는 커밋 메시지 | 1 | 2 | 3 | 4 | 5* |
1234-example 과 같이 issue ID가 앞에 붙은 브랜치 이름 | 1* | 2* | 3* | 4* | 5* |
별표(*)가 표시된 항목은 이슈 닫기 패턴을 추가합니다.
Merge Request 보기
프로젝트, 그룹, 개인의 Merge Request를 볼 수 있습니다.
프로젝트
프로젝트의 모든 Merge Request를 보려면
- 왼쪽 사이드바에서 Search or go to를 클릭하고, 프로젝트를 찾습니다.
- Code > Merge requests를 클릭합니다.
또는 키보드 단축키를 사용하려면 g
+ m
을 누릅니다.
그룹의 모든 프로젝트
그룹에서 모든 프로젝트의 Merge Request를 보려면
- 왼쪽 사이드바에서 Search or go to를 클릭하고, 그룹을 찾습니다.
- Code > Merge requests를 클릭합니다.
그룹에 하위 그룹이 있으면, 이 보기는 하위 그룹 프로젝트에서 Merge Request를 표시합니다.
나에게 할당됨
나에게 할당된 모든 Merge Request를 보려면
- 왼쪽 사이드바에서 Search or go to를 클릭합니다.
- 드롭다운 목록에서 Merge requests assigned to me를 클릭합니다.
또는
- 키보드 단축키를 사용하려면,
Shift
+m
을 누릅니다.
또는
- 왼쪽 사이드바에서 Code>Merge requests를 클릭합니다.
- 드롭다운 목록에서 Assigned를 클릭합니다.
Merge Request 목록을 필터링하기
Merge Request의 목록을 필터링하려면
- 왼쪽 사이드바에서 Search or go to를 클릭하고, 프로젝트를 찾습니다.
- Code > Merge requests를 클릭합니다.
- Merge Request 목록 위에, **Search or filter results...**를 클릭합니다.
- 드롭다운 목록에서 필터링하려는 속성을 선택합니다. 예를 들어,
- environment or deployment date(환경 또는 배포 날짜)
- ID: Merge Request 30만 반환하려면 필터
#30
을 입력하기 - User filter(사용자 필터): 사용자 목록을 표시하려면 다음 필터 중 하나를 입력하기(또는 드롭다운 목록에서 선택하기)
- Approved-By: 사용자가 이미 승인한 Merge Request일 때(Premium)
- Approver: 사용자가 승인할 자격이 있는 Merge Request일 때(더 자세한 정보는 Code owners를 참조하세요).(Premium)
- Reviewer: 이 사용자가 리뷰한 Merge Request일 때
- 속성을 필터링하는 데 사용할 연산자를 선택하거나 입력합니다. 다음 연산자를 사용할 수 있습니다.
=
: Is!=
: Is not
- 속성을 필터링할 텍스트를 입력합니다. None 또는 Any로 일부 속성을 필터링할 수 있습니다.
- 여러 속성으로 필터 링하려면 이 프로세스를 반복합니다. 여러 속성은 논리
AND
로 연결됩니다. - 내림차순 또는 오름차순으로 Sort direction을 선택합니다.
환경 또는 배포 날짜
이 기능은 GitLab 13.6에 도입됐습니다.
환경 또는 날짜와 같은 배포 데이터로 Merge Request를 필터링하려면, 다음 사항을 입력합니다(또는 드롭다운 목록에서 선택합니다).
- Environment(환경)
- Deployed-before(배포 전)
- Deployed-after(배포 후)
Fast-forward merge 방법을 사용하는 프로젝트는 결과를 반환하지 않 습니다. 이 방법은 merge 커밋을 생성하지 않기 때문입니다.
환경별로 필터링할 때, 드롭다운 목록은 사용자가 선택할 수 있는 모든 환경을 표시합니다.
Deployed-before
또는 Deployed-after
로 필터링할 때
- 날짜는 환경(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
퀵 액션을 사용하거나, 또는
- 왼쪽 사이드바에서 Search or go to를 클릭하고, 프로젝트를 찾습니다.
- Code > Merge requests를 클릭하고, Merge Request를 찾습니다.
- 오른쪽 사이드바에서, 오른쪽 사이드바를 펼치고 Assignees 섹션 위치를 찾습니다.
- Edit을 클릭합니다.
- 할당하려는 사용자를 검색하고, 사용자를 선택합니다.
Merge Request는 사용자의 담당 Merge Request 목록에 추가됩니다.
여러 사용자 할당하기
(Premium)
이 기능은 GitLab 13.9에서 GitLab Premium 기능으로 이동했습니다.
GitLab에서는 여러 사람이 Merge Request를 담당하면, Merge Request에 여러 담당자를 등록할 수 있습니다.
Merge Request에 여러 담당자를 등록하려면, 텍스트 영역에서 /assign @user
퀵 액션을 사용하거나, 또는
- 왼쪽 사이드바에서 Search or go to를 클릭하고, 프로젝트를 찾습니다.
- Code > Merge requests를 클릭하고, Merge Request를 찾습니다.
- 오른쪽 사이드바에서, 오른쪽 사이드바를 펼치고 Assignees 섹션 위치를 찾습니다.
- Edit을 클릭하고, 드롭다운 목록에서 Merge Request를 할당하려는 모든 사용자를 선택합니다.
담당자를 제거하려면, 같은 드롭다운 목록에서 사용자를 선택 취소합니다.
Merge Request 닫기
Merge Request에서 작업을 영구적으로 중단하기로 했다면, GitLab은 Merge Request를 삭제하는 대신 이를 닫는 걸 권장합니다. Merge Request 작성자와 담당자, 프로젝트에서 Developer와 Maintainer, Owner 권한이 있는 사용자는 프로젝트의 Merge Request를 닫을 수 있습니다.
- 닫으려는 Merge Request에 들어갑니다.
- 페이지 하단의 코멘트 상자로 스크롤 합니다.
- 코멘트 상자 다음에 있는 Close merge request를 클릭합니다.
GitLab에서 Merge Request를 닫아도 Merge Request, 코멘트, 모든 관련 파이프라인 기록은 보존됩니다.
Merge Request 삭제하기
GitLab은 Merge Request를 삭제하는 대신 닫는 걸 권장합니다.
Merge Request 삭제는 취소할 수 없습니다.
Merge Request를 삭제하려면
- 프로젝트 Owner 권한이 있는 사용자로 GitLab에 로그인합니다. 이 권한이 있는 사용자만 프로젝트의 Merge Request를 삭제할 수 있습니다.
- 삭제하려는 Merge Request에 들어가서 Edit을 클릭합니다.
- 페이지 하단으로 스크롤 하고, Delete merge request를 클릭합니다.
merge 할 때 소스 브랜치 삭제하기
Merge Request의 소스 브랜치를 삭제할 수 있습니다.
- Merge Request를 생성할 때, Delete source branch when merge request accepted를 클릭합니다.
- Merge Request를 merge 할 때, Maintainer 권한이 있다면 Delete source branch를 클릭합니다.
관리자는 프로젝트 설정에서 이 옵션을 기본값으로 설정할 수 있습니다.
타깃 브랜치를 merge 할 때 Merge Request 업데이트 하기
(자체 관리형)
Merge Request는 종종 서로 연결되며, 하나의 Merge Request는 다른 Merge Request에 추가된 코드 또는 변경된 코드에 따라 달라집니다. 개별 Merge Request를 작게 유지하도록, GitLab에서는 타깃 브랜치를 main
브랜치에 merge 할 때 열려 있는 Merge Request를 최대 4개까지 업데이트 할 수 있습니다. 예를 들어,
- 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은 feature-alpha
에서 main
으로 Merge request 2 대상을 업데이트 합니다.
서로 연결된 콘텐츠 업데이트가 있는 Merge Request는 다음 방법 중 한 가지 방법으로 보통 처리됩니다.
- Merge request 1은
main
에 먼저 merge 됩니다. 그다음, Merge request 2는main
에 다시 타깃 됩니다. - Merge request 2는
feature-alpha
에 merge 됩니다. 업데이트된 Merge request 1은 이제feature-alpha
와feature-beta
내용을 포함합니다. 이는main
에 merge 됩니다.
이 기능은 Merge Request가 merge 될 때만 동작합니다. merge 한 다음, Remove source branch를 클릭하면 열려 있는 Merge Request를 다시 타깃 하지 않습니다. 이러한 개선 사항은 후속 조치로 제안됩니다.