병합 요청 생성
GitLab에는 병합 요청을 생성할 수 있는 다양한 방법이 있습니다.
병합 요청 목록에서
병합 요청 목록에서 병합 요청을 만들 수 있습니다.
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- Code > 병합 요청을 선택합니다.
- 오른쪽 상단에서 새 병합 요청을 선택합니다.
- 소스 및 대상 브랜치를 선택한 다음 브랜치 비교 및 계속을 선택합니다.
- 새 병합 요청 페이지의 필드를 작성한 다음 병합 요청 만들기를 선택합니다.
각 브랜치는 하나의 열린 병합 요청과 연결될 수 있습니다. 이 브랜치에 대한 이미 존재하는 병합 요청이 있는 경우, 해당 병합 요청으로의 링크가 표시됩니다.
이슈에서
- 변경됨: 14.8 버전에서 병합 요청 생성 버튼의 동작을 변경하여 병합 요청 생성 양식이 열리도록 했습니다.
개발 워크플로가 모든 병합 요청에 대한 문제를 요구하는 경우, 프로세스를 가속화하기 위해 문제에서 직접 브랜치를 생성할 수 있습니다. 새로운 브랜치 및 나중에 해당 병합 요청은 이 문제와 관련되었음을 나타냅니다. 병합 요청을 병합한 후 문제는 자동으로 닫힙니다. 자동 문제 닫힘이 비활성화되지 않은 한:
브랜치와 병합 요청을 동시에 생성하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- Plan > 이슈를 선택하고 이슈를 찾습니다.
- 이슈 설명의 맨 아래로 이동합니다.
- 병합 요청 만들기 > 병합 요청 및 브랜치 만들기를 선택합니다.
- 다이얼로그에서 제안된 브랜치 이름을 검토합니다. 이는 프로젝트의 브랜치 이름 템플릿을 기반으로 합니다. 이름이 이미 사용 중이거나 다른 브랜치 이름이 필요한 경우 이름을 변경합니다.
- 소스 브랜치 또는 태그를 선택합니다.
- 병합 요청 만들기를 선택합니다.
문제에서 직접 브랜치만 생성하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- Plan > 이슈를 선택하고 이슈를 찾습니다.
- 이슈의 설명 맨 아래로 이동합니다.
- 병합 요청 만들기 > 브랜치 만들기를 선택합니다.
- 다이얼로그에서 제안된 브랜치 이름을 검토합니다. 이는 프로젝트의 브랜치 이름 템플릿을 기반으로 합니다. 이름이 이미 사용 중이거나 다른 브랜치 이름이 필요한 경우 이름을 변경합니다.
- 소스 브랜치 또는 태그를 선택합니다.
- 브랜치 만들기를 선택합니다.
만약 Git 저장소가 비어 있다면, GitLab은:
- 기본 브랜치를 생성합니다.
- 빈
README.md
파일을 커밋합니다. - 이슈 제목을 기반으로 새로운 브랜치를 생성하고 해당 브랜치로 리디렉션합니다.
- 프로젝트가 쿠버네티스와 같은 배포 서비스로 구성되어 있는 경우
.gitlab-ci.yml
파일을 만들어 자동 배포 설정을 제안합니다.
생성한 브랜치 이름이 문제 번호로 접두사가 붙은 경우, GitLab은 문제와 병합 요청을 상호 연결하고 문제 닫힘 패턴을 병합 요청 설명에 추가합니다. 대부분의 경우 #ID로 닫혀진다
와 같이 보입니다. 여기서 ID
는 문제의 ID입니다. 프로젝트가 닫힘 패턴으로 구성된 경우, 병합 요청이 병합되면 문제가 닫힙니다.
파일 추가, 편집 또는 업로드 시
파일을 추가, 편집 또는 저장소에 업로드할 때도 병합 요청을 만들 수 있습니다.
- 파일 추가, 편집 또는 업로드를 통해 파일을 저장소에 추가, 편집 또는 업로드합니다.
- 커밋 메시지에 커밋 이유를 입력합니다.
- 대상 브랜치를 선택하거나 이름을 입력하여 새 브랜치를 만듭니다.
- 이 변경 사항으로 새로운 병합 요청 시작 확인란 또는 토글을 선택합니다. 이 확인란 또는 토글은 대상이 소스 브랜치와 다른 경우 또는 소스 브랜치가 보호된 경우에만 표시됩니다.
- 파일 업로드를 선택합니다.
- 필드를 작성한 다음 병합 요청 만들기를 선택합니다.
브랜치를 생성할 때
브랜치를 만들 때 머지 요청을 생성할 수 있습니다.
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 코드 > 브랜치를 선택합니다.
- 브랜치 이름을 입력하고 새 브랜치를 선택합니다.
- 파일 목록 위에서 오른쪽에 머지 요청 생성을 선택합니다. 머지 요청이 생성됩니다. 기본 브랜치는 대상입니다.
- 필드를 작성하고 머지 요청 생성을 선택합니다.
로컬 Git 명령어를 사용할 때
로컬 머신에서 Git 명령어를 실행하여 머지 요청을 생성할 수 있습니다.
-
브랜치를 생성합니다:
git checkout -b my-new-branch
-
필요에 따라 파일을 만들거나 편집, 삭제합니다.
-
파일을 준비하여 로컬에서 커밋하고 스테이징합니다:
# 파일을 준비하여 커밋합니다 git add . # 로컬에서 변경사항을 커밋합니다 git commit -m "나의 커밋 메시지"
-
git push origin my-new-branch
나중에 머지 요청에서 수정할 필드 수를 줄이려면 푸시 옵션을 사용하여 필드 값을 설정합니다.
-
git push
에 대한 응답으로, GitLab은 머지 요청을 생성할 수 있는 직접 링크를 제공합니다:... remote: my-new-branch에 대한 머지 요청을 생성하려면 다음을 방문하세요: remote: https://gitlab.example.com/my-group/my-project/merge_requests/new?merge_request%5Bsource_branch%5D=my-new-branch
-
링크를 복사하여 브라우저에 붙여넣습니다.
포크한 후 작업할 때
메인 프로젝트로 기여하기 위해 포크에서 메인 프로젝트로 머지 요청을 생성할 수 있습니다.
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 포크를 찾습니다.
- 코드 > 머지 요청을 선택하고 새 머지 요청을 선택합니다.
- 소스 브랜치에는 변경 내용이 포함된 포크 내의 브랜치를 선택합니다.
-
대상 브랜치:
- 대상 프로젝트를 선택합니다. (포크가 아닌 상위 프로젝트를 선택해야 합니다.)
- 상위 저장소에서 브랜치를 선택합니다.
참고: 상류로 변경 사항을 자주 기여하는 경우, 기본 대상 프로젝트 설정을 고려하세요.
- 브랜치 비교 및 계속을 선택합니다.
- 머지 요청 생성을 선택합니다. 머지 요청이 대상 프로젝트에 생성됩니다. 포크가 아닙니다.
작업이 머지된 후, 포크와의 연결을 해제하세요 더 이상 기여할 계획이 없다면.
자세한 정보는 포크 워크플로 문서를 참조하세요.
기본 대상 프로젝트 설정
기본적으로 포크에서 생성된 머지 요청은 상류 프로젝트가 대상이 됩니다. 동일한 조건을 충족하는 대상 프로젝트로 설정할 수 있습니다.
전제 조건:
- 포크에서 작업 중입니다.
- 개발자 역할 이상이거나 프로젝트에서 머지 요청을 생성할 수 있는 권한이 있어야 합니다.
- 상류 프로젝트에서 머지 요청을 생성할 수 있어야 합니다.
- 포크의 가시성 설정이 상류 저장소와 일치하거나 상위 저장소 보다 덜 제한적이어야 합니다. 예를 들어: 포크가 비공개이고 상류가 공개이면 이 설정이 표시되지 않습니다.
수행 방법:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 설정 > 머지 요청을 선택합니다.
- 대상 프로젝트 섹션에서 기본 대상 프로젝트로 사용할 옵션을 선택합니다.
- 변경 사항 저장을 선택합니다.
이메일을 보내는 방법으로
이메일 메시지를 GitLab에 보내어 머지 요청을 생성할 수 있습니다. 머지 요청 대상 브랜치는 프로젝트의 기본 브랜치입니다.
전제 조건:
- 머지 요청은 현재 프로젝트가 대상이어야 합니다.
- GitLab 관리자는 수신 이메일을 구성해야 합니다.
- GitLab 관리자는 이메일로 회신을 구성해야 합니다.
- 적어도 개발자 역할 이상이거나 프로젝트에서 머지 요청 생성 권한이 있어야 합니다.
이메일을 보내어 머지 요청을 생성하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 코드 > 머지 요청을 선택합니다.
- 프로젝트에 머지 요청이 포함되어 있는 경우, 해당 프로젝트로 새 머지 요청 이메일 보내기를 선택합니다.
- 대화 상자에서 표시된 이메일 주소를 복사합니다. 이 주소는 비공개로 유지하세요. 해당 주소를 알고 있다면, 이슈를 만들거나 머지 요청을 하여당하는 것처럼 할 수 있습니다.
-
이메일을 열고 다음 정보로 메시지를 작성합니다:
- 수신: 복사한 이메일 주소입니다.
- 제목: 소스 브랜치 이름입니다.
- 이메일 본문은 머지 요청 설명입니다.
- 커밋을 추가하려면 메시지에
.patch
파일을 첨부하세요. - 이메일을 보냅니다.
머지 요청이 생성됩니다.
이메일을 통해 병합 요청 생성 시 첨부 파일 추가
이메일의 첨부 파일로 패치를 추가하여 병합 요청에 커밋을 추가합니다.
- 패치의 병합된 크기는 2MB 이하여야 합니다.
- 패치로 간주되려면, 첨부 파일의 파일 이름이
.patch
로 끝나야 합니다. - 패치는 이름순으로 처리됩니다.
- 제목의 소스 브랜치가 존재하지 않을 경우, 저장소의
HEAD
또는 기본 대상 브랜치에서 생성됩니다. 수동으로 대상 브랜치를 변경하려면/target_branch
퀵 액션을 사용하십시오. - 소스 브랜치가 이미 존재하는 경우, 패치는 위에 적용됩니다.
문제 해결
이슈에서 병합 요청을 생성하는 옵션이 없음
이슈에서 병합 요청 생성 옵션이 표시되지 않는 경우:
- 동일한 이름의 브랜치가 이미 존재하는 경우.
- 해당 브랜치에 이미 병합 요청이 존재하는 경우.
- 프로젝트에 활성 “fork” 관계가 있는 경우.
- 프로젝트가 비공개이고 이슈가 기밀인 경우.
이 버튼을 표시하려면, 가능한 해결책 중 하나는 프로젝트의 fork 관계를 제거하는 것입니다. 제거 후, fork 관계를 복원할 수 없습니다. 이 프로젝트는 더 이상 소스 프로젝트 또는 다른 fork에 병합 요청을 보내거나 받을 수 없게 됩니다.
이메일 메시지를 처리할 수 없음
병합 요청을 생성하기 위해 이메일을 보내는 도중 upstream 프로젝트를 대상으로 시도할 경우, GitLab은 다음과 같은 오류로 응답합니다:
죄송합니다. GitLab으로의 이메일 메시지를 처리할 수 없습니다.
이 작업을 수행할 수 없습니다. 이를 잘못된 것으로 생각한다면 관리자에게 연락하십시오.