병합 요청에 대한 포크 간 협업

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

포크에서 병합 요청을 열면 업스트림
구성원이 귀하의 브랜치에서 협업할 수 있도록 허용할 수 있습니다.

이 옵션을 활성화하면 대상 브랜치에 병합할 수 있는 권한이 있는
구성원에게 병합 요청의 소스 브랜치에 대한 쓰기 권한이 부여됩니다.

업스트림 프로젝트의 구성원은 병합하기 전에
작은 수정 작업이나 브랜치 리베이스를 수행할 수 있습니다.

이 기능은 공개적으로 접근 가능한 포크된
프로젝트 간의 병합 요청에 대해 사용할 수 있습니다.

업스트림 구성원으로부터 커밋 허용

병합 요청의 작성자로서 기여하고 있는 프로젝트의
업스트림 구성원으로부터 커밋 편집을 허용할 수 있습니다:

  1. 병합 요청을 생성하거나 편집하는 동안 Contribution
    스크롤하고 Allow commits from members who can merge to the target branch
    체크박스를 선택합니다.
  2. 병합 요청 생성을 완료합니다.

병합 요청을 생성하면 병합 요청 위젯에
Members who can merge are allowed to add commits라는 메시지가 표시됩니다.
업스트림 구성원은 다음 작업을 수행할 수 있습니다:

  • 귀하의 브랜치에 직접 커밋합니다.
  • 병합 요청의 파이프라인 및 작업을 재시도합니다.

업스트림 구성원으로부터 커밋 방지

병합 요청의 작성자로서 기여하고 있는 프로젝트의
업스트림 구성원으로부터 커밋 편집을 방지할 수 있습니다:

  1. 병합 요청을 생성하거나 편집하는 동안 Contribution
    스크롤하고 Allow commits from members who can merge to the target branch
    체크박스를 해제합니다.
  2. 병합 요청 생성을 완료합니다.

업스트림 구성원으로서 포크에 푸시

업스트림 구성원이 기여를 허용한 경우
포크된 리포지토리의 브랜치에 직접 푸시할 수 있습니다:

  • 병합 요청의 작성자가 업스트림 구성원으로부터의 기여를
    허용하였습니다.
  • 업스트림 프로젝트에 대해 최소한 개발자 역할이 있습니다.

다음 예제를 참조하십시오:

  • 포크된 리포지토리 URL은 git@gitlab.com:contributor/forked-project.git입니다.
  • 병합 요청의 브랜치는 fork-branch입니다.

기여자의 병합 요청에 커밋을 변경하거나 추가하려면:

  1. 왼쪽 사이드바에서 Search or go to를 선택하고
    프로젝트를 찾습니다.
  2. Code > Merge requests를 선택하고 병합 요청을 찾습니다.
  3. 오른쪽 상단에서 Code를 선택한 후 Check out branch를 선택합니다.
  4. 대화 상자에서 Copy ( )를 선택합니다.
  5. 터미널에서 클론한 리포지토리로 이동하여
    명령을 붙여넣습니다. 예를 들어:

    git fetch "git@gitlab.com:contributor/forked-project.git" 'fork-branch'
    git checkout -b 'contributor/fork-branch' FETCH_HEAD
    

    이 명령은 포크된 프로젝트에서 브랜치를 가져오고 귀하가 작업할 수 있는
    로컬 브랜치를 생성합니다.

  6. 브랜치의 로컬 복사본에 변경 사항을 추가한 후 커밋합니다.
  7. 로컬 변경 사항을 포크된 프로젝트에 푸시합니다.
    다음 명령은 git@gitlab.com:contributor/forked-project.git 리포지토리의
    fork-branch 브랜치에 로컬 브랜치 contributor/fork-branch를 푸시합니다:

    git push git@gitlab.com:contributor/forked-project.git contributor/fork-branch:fork-branch
    

    커밋을 수정하거나 스쿼시한 경우 강제로 푸시해야 합니다.
    이 명령은 커밋 내역을 다시 쓰므로 주의해서 진행하십시오:

    git push --force git@gitlab.com:contributor/forked-project.git contributor/fork-branch:fork-branch
    

    두 브랜치 사이의 콜론(:)에 유의하십시오. 일반적인 형식은 다음과 같습니다:

    git push <forked_repository_git_url> <local_branch>:<fork_branch>
    

문제 해결

포크된 프로젝트의 MR 페이지에서 파이프라인 상태를 사용할 수 없음

사용자가 프로젝트를 포크할 때, 포크된 복사의 권한은 원본 프로젝트에서 복사되지 않습니다. 포크 생성자는 업스트림 프로젝트의 멤버들이 병합 요청에서 변경 사항을 보기 위해 포크된 복사본에 권한을 부여해야 합니다.

포크된 프로젝트의 병합 요청 페이지에서 원본 프로젝트로 돌아가는 파이프라인 상태를 보려면:

  1. 그룹 만들기 를 선택하여 모든 업스트림 멤버를 포함하십시오.

  2. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 포크된 프로젝트를 찾습니다.

  3. 포크된 프로젝트의 관리 > 멤버 페이지로 이동하여 새로 생성된 그룹을 포크된 프로젝트에 초대하십시오.