Merge Request 생성

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed형, GitLab Dedicated

GitLab은 Merge Request을 생성할 수 있는 다양한 방법을 제공합니다.

note
브랜치 네이밍 규칙을 강제로 적용하여 문제를 예방하고, Merge Request 생성을 간소화하기 위한 브랜치 네이밍 패턴을 제공합니다.

Merge Request 디렉터리에서

Merge Request 디렉터리에서 Merge Request을 생성할 수 있습니다.

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 코드 > Merge Request을 선택합니다.
  3. 오른쪽 상단에서 새 Merge Request을 선택합니다.
  4. 소스 및 대상 브랜치를 선택한 후 브랜치 비교 및 계속을 선택합니다.
  5. 새 Merge Request 페이지의 필드를 작성한 후 Merge Request 생성을 선택합니다.

각 브랜치는 하나의 열린 Merge Request과만 연결될 수 있습니다. 이 브랜치에 대한 Merge Request이 이미 있는 경우 기존 Merge Request에 대한 링크가 표시됩니다.

이슈에서

개발 워크플로우가 각 Merge Request에 대해 이슈를 필요로 하는 경우, 프로세스를 가속화하기 위해 이슈에서 직접 브랜치를 생성할 수 있습니다. 새 브랜치 및 이후 해당 Merge Request이 이 문제와 관련되었음을 표시합니다. Merge Request이 Merge된 후, 이슈는 자동으로 닫힙니다. 자동 이슈 닫힘이 비활성화된 경우를 제외하고:

Merge Request 및 브랜치

한 번에 브랜치와 Merge Request을 생성하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 계획 > 이슈를 선택하여 이슈를 찾습니다.
  3. 이슈 설명의 하단으로 이동합니다.
  4. Merge Request 만들기 > Merge Request 및 브랜치 만들기를 선택합니다.
  5. 다이얼로그에서 제안된 브랜치 이름을 검토합니다. 프로젝트의 브랜치 이름 템플릿을 기반으로 합니다. 브랜치 이름이 이미 사용되었거나 다른 브랜치 이름이 필요한 경우에는 이름을 변경합니다.
  6. 소스 브랜치 또는 태그를 선택합니다.
  7. Merge Request 생성을 선택합니다.
브랜치만

이슈에서 직접 브랜치만 생성하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 계획 > 이슈를 선택하여 이슈를 찾습니다.
  3. 이슈 설명의 하단으로 이동합니다.
  4. Merge Request 만들기 > 브랜치 만들기를 선택합니다.
  5. 다이얼로그에서 제안된 브랜치 이름을 검토합니다. 프로젝트의 브랜치 이름 템플릿을 기반으로 합니다. 브랜치 이름이 이미 사용되었거나 다른 브랜치 이름이 필요한 경우에는 이름을 변경합니다.
  6. 소스 브랜치 또는 태그를 선택합니다.
  7. 브랜치 생성을 선택합니다.

만약 Git 리포지터리가 비어있는 경우, GitLab은:

여러분이 생성하는 브랜치 이름이 이슈 번호로 접두어가 붙어있다면, GitLab은 이슈와 Merge Request을 상호 연결시키고, Merge Request 설명에 이슈 닫힘 패턴을 추가합니다. 대부분의 경우, 이는 Closes #ID로 보이게 됩니다. 여기서 ID는 이슈의 ID입니다. 프로젝트가 닫힘 패턴으로 구성되어 있는 경우, Merge Request이 Merge되면 이슈가 닫힙니다.

파일 추가, 편집 또는 업로드 시

여러분이 리포지터리에 파일을 추가, 편집 또는 업로드할 때 Merge Request을 생성할 수 있습니다.

  1. 리포지터리에 파일을 추가, 편집 또는 업로드합니다.
  2. 커밋 메시지에 커밋 이유를 입력합니다.
  3. 대상 브랜치를 선택하거나 이름을 입력하여 새 브랜치를 생성합니다.
  4. 오직 대상이 소스 브랜치와 다를 때 또는 소스 브랜치가 보호될 때에만 이 변경으로 새 Merge Request 시작 확인란 또는 토글이 표시됩니다.
  5. 파일 업로드를 선택합니다.
  6. 필드를 작성하고 Merge Request 생성을 선택합니다.

브랜치 생성 시

브랜치를 생성할 때 Merge Request을 생성할 수 있습니다.

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 코드 > 브랜치를 선택합니다.
  3. 브랜치 이름을 입력하고 새 브랜치를 선택합니다.
  4. 파일 디렉터리 위에, 오른쪽에 Merge Request 생성을 선택합니다. Merge Request이 생성됩니다. 기본 브랜치는 대상입니다.
  5. 필드를 작성하고 Merge Request 생성을 선택합니다.

로컬에서 Git 명령어를 사용하는 경우

로컬 컴퓨터에서 Git 명령어를 실행하여 Merge Request을 생성할 수 있습니다.

  1. 브랜치를 생성합니다:

    git checkout -b my-new-branch
    
  2. 필요한 대로 파일을 생성, 편집 또는 삭제합니다.

  3. 파일을 커밋할 준비를 마치고 로컬로 커밋합니다:

    # 파일을 커밋할 준비
    git add .
    # 로컬로 변경사항 커밋
    git commit -m "나의 커밋 메시지"
    
  4. 브랜치와 해당 커밋을 GitLab에 푸시합니다:

    git push origin my-new-branch
    

    나중에 Merge Request에서 편집해야 할 필드의 수를 줄이려면 푸시 옵션을 사용하여 값을 설정합니다.

  5. git push에 대한 응답으로, GitLab은 Merge Request을 생성하기 위한 직접 링크를 제공합니다:

    ...
    remote: my-new-branch에 대한 Merge Request을 생성하려면, 방문하세요:
    remote:   https://gitlab.example.com/my-group/my-project/merge_requests/new?merge_request%5Bsource_branch%5D=my-new-branch
    
  6. 링크를 복사하여 브라우저에 붙여넣습니다.

별도 포크에서 작업하는 경우

별도 포크로부터 메인 프로젝트에 기여하기 위해 Merge Request을 생성할 수 있습니다.

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 여러분의 포크를 찾습니다.
  2. 코드 > Merge Request을 선택한 후 새 Merge Request을 선택합니다.
  3. 소스 브랜치에서 여러분의 변경 사항을 포함하는 포크 내 브랜치를 선택합니다.
  4. 대상 브랜치:

    1. 대상 프로젝트를 선택합니다. (여러분의 포크가 아닌 상위 프로젝트를 선택해야 합니다.)
    2. 상위 리포지터리에서 브랜치를 선택합니다.
    note
    변화를 자주 상위에 제공하는 경우, 별도 기본 대상 프로젝트를 설정할 것을 고려합니다.
  5. 브랜치 비교 및 계속을 선택합니다.
  6. Merge Request 생성을 선택합니다. Merge Request이 여러분의 포크가 아닌 대상 프로젝트에 생성됩니다.

작업이 Merge되면 포크 언링크를 해서 더 이상 기여를 하지 않는 경우에 별도 포크에서 상위 프로젝트를 언링크하세요.

더 많은 정보는 별도 포크 워크플로우 설명서를 참조하세요.

기본 대상 프로젝트 설정

기본적으로, 포크에서 시작된 Merge Request은 상류 프로젝트가 아닌 포크된 프로젝트를 대상으로 합니다.

포크된 프로젝트가 상류 프로젝트가 아닌 기본 대상으로 설정되도록 구성할 수 있습니다.

전제 조건:

  • 포크에서 작업 중이어야 합니다.
  • 적어도 Developer 역할이 있거나 프로젝트에서 Merge Request을 생성할 수 있는 권한이 있어야 합니다.
  • 상류 프로젝트에서 Merge Request을 생성할 수 있어야 합니다.
  • 포크의 가시성 설정은 상류 리포지터리와 일치하거나 더 엄격해야 합니다. 예를 들어: 포크가 비공개이지만 상류가 공개인 경우에는 이러한 설정이 표시되지 않습니다.

다음과 같이 수행합니다:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > Merge Request을 선택합니다.
  3. 대상 프로젝트 섹션에서 사용할 옵션을 선택합니다.
  4. 변경 사항 저장을 선택합니다.

이메일을 통해 보내기

이메일 메시지를 GitLab으로 보내 Merge Request을 생성할 수 있습니다. Merge Request 대상 브랜치는 프로젝트의 기본 브랜치입니다.

전제 조건:

  • Merge Request은 상류 프로젝트가 아닌 현재 프로젝트를 대상으로 해야 합니다.
  • GitLab 관리자가 들어오는 이메일을 구성해야 합니다.
  • GitLab 관리자가 이메일로 회신을 구성해야 합니다.
  • 적어도 Developer 역할이 있거나 프로젝트에서 Merge Request을 생성할 수 있는 권한이 있어야 합니다.

이메일을 통해 Merge Request 생성:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 코드 > Merge Request을 선택합니다.
  3. 프로젝트에 Merge Request이 있으면 이 프로젝트로 새 Merge Request 전송을 선택합니다.
  4. 대화 상자에서 표시된 이메일 주소를 복사합니다. 이 주소는 비공개로 유지하세요. 이 주소를 가진 사람은 당신인 것처럼 이슈나 Merge Request을 생성할 수 있습니다.
  5. 이메일을 열고 다음 정보를 포함한 메시지를 작성합니다:

    • 수신자 라인에 복사한 이메일 주소가 있어야 합니다.
    • 제목은 소스 브랜치 이름이어야 합니다.
    • 이메일 본문은 Merge Request 설명이어야 합니다.
  6. 커밋을 추가하려면 메시지에 .patch 파일을 첨부합니다.
  7. 이메일을 보냅니다.

Merge Request이 생성됩니다.

이메일을 통해 Merge Request 생성 시 첨부 파일 추가

이메일에 첨부 파일로 패치를 추가하여 Merge Request에 커밋을 추가할 수 있습니다.

  • 패치의 결합된 크기는 2MB 이하이어야 합니다.
  • 패치로 고려되려면 첨부 파일의 파일 이름이 .patch로 끝나야 합니다.
  • 패치는 이름 순서대로 처리됩니다.
  • 제목의 소스 브랜치가 존재하지 않으면 리포지터리의 HEAD 또는 기본 대상 브랜치에서 생성됩니다. 매뉴얼으로 대상 브랜치를 변경하려면 /target_branch 빠른 작업을 사용하십시오.
  • 소스 브랜치가 이미 존재하는 경우 패치가 위에 적용됩니다.

문제 해결

이슈에 대한 Merge Request 생성 옵션이 없음

이슈에 Merge Request 생성 옵션이 표시되지 않는 경우:

  • 같은 이름의 브랜치가 이미 있습니다.
  • 해당 브랜치에 대한 Merge Request이 이미 있습니다.
  • 프로젝트에 활성 포크 관계가 있습니다.
  • 프로젝트가 비공개이고 이슈가 기밀인 경우입니다.

이 버튼을 표시하려면 가능한 해결책 중 하나는 프로젝트의 포크 관계를 제거하는 것입니다. 제거한 후, 포크 관계를 복원할 수 없습니다. 이 프로젝트는 더 이상 소스 프로젝트나 다른 포크로부터 Merge Request을 받거나 보낼 수 없습니다.

이메일 메시지를 처리할 수 없음

이메일을 보내어 Merge Request을 생성하려고 하지만 상류 프로젝트를 대상으로 할 경우, GitLab은 다음과 같은 오류로 응답합니다:

아쉽게도, GitLab으로 보낸 이메일 메시지를 처리할 수 없습니다.

이 작업을 수행할 수 없습니다. 이것이 오류라고 생각되면 관리자에게 연락하세요.