Fork으로부터의 병합 요청에서 협업하기

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

Fork에서 병합 요청을 열 때, 상위 멤버들이 당신의 브랜치에서 협업할 수 있도록 허용할 수 있습니다. 이 옵션을 활성화하면 대상 브랜치로 병합할 권한이 있는 멤버들이 병합 요청의 소스 브랜치에 쓰기 권한을 얻게 됩니다.

상위 프로젝트의 멤버들은 그 후에 병합하기 전에 소규모 수정이나 리베이스 브랜치를 만들 수 있습니다.

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

상위 멤버로부터의 커밋 허용

병합 요청의 작성자로서 기여하고 있는 프로젝트의 상위 멤버들로부터 커밋 편집을 허용할 수 있습니다:

  1. 병합 요청을 작성하거나 편집하는 동안 기여로 스크롤하고 대상 브랜치에 병합할 수 있는 멤버들로부터의 커밋을 허용 확인란을 선택하세요.
  2. 병합 요청을 완료하세요.

병합 요청을 생성한 후, 병합 요청 위젯은 병합할 수 있는 멤버들이 커밋을 추가할 수 있습니다 메시지를 표시합니다. 상위 멤버들은 그 후에 다음을 할 수 있습니다:

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

상위 멤버로부터의 커밋 방지

병합 요청의 작성자로서 기여하고 있는 프로젝트의 상위 멤버들로부터 커밋 편집을 방지할 수 있습니다:

  1. 병합 요청을 작성하거나 편집하는 동안 기여로 스크롤하고 대상 브랜치에 병합할 수 있는 멤버들로부터의 커밋을 허용 확인란을 해제합니다.
  2. 병합 요청을 완료하세요.

Fork으로부터의 상위 멤버로 Push

다음의 경우에는 포크한 저장소의 브랜치로 직접 Push할 수 있습니다:

  • 병합 요청의 작성자가 상위 멤버로부터의 기여를 활성화했을 때
  • 상위 프로젝트에서 최소한 Developer 역할을 가지고 있을 때

다음 예에서:

  • 포크한 저장소 URL은 git@gitlab.com:contributor/forked-project.git입니다.
  • 병합 요청의 브랜치는 fork-branch입니다.

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

  1. 좌측 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 코드 > 병합 요청을 선택하고 병합 요청을 찾습니다.
  3. 오른쪽 상단에서 코드를 선택한 후 브랜치로 체크아웃을 선택합니다.
  4. 대화상자에서 복사를 선택합니다 ().
  5. 터미널에서 저장소의 복제본으로 이동하고 명령어를 붙여넣습니다. 예를 들어:

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

    이러한 명령어들은 포크된 프로젝트에서 브랜치를 가져와 작업할 수 있는 로컬 브랜치를 만듭니다.

  6. 로컬 브랜치에서 변경 사항을 만들고 그런 다음 커밋합니다.
  7. 로컬 변경 사항들을 포크된 프로젝트에 푸시합니다. 다음 명령어는 로컬 브랜치 contributor/fork-branchgit@gitlab.com:contributor/forked-project.git 저장소의 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>
    

문제 해결

Forked 프로젝트의 MR 페이지에서 파이프라인 상태를 볼 수 없음

사용자가 프로젝트를 fork할 때, 포크된 복사본의 권한이 원본 프로젝트에서 복사되지 않습니다. 포크를 생성한 사람은 상위 프로젝트의 멤버들이 병합 요청의 변경 사항을 볼 수 있거나 병합할 수 있도록 포크된 복사본에 권한을 부여해야 합니다.

포크된 프로젝트의 병합 요청 페이지에서 파이프라인 상태를 보려면 다음을 수행하세요:

  1. 모든 상위 멤버를 포함하는 그룹을 만듭니다.
  2. 왼쪽 사이드바에서 포크된 프로젝트를 선택하고 찾습니다.
  3. 포크된 프로젝트에서 관리 > 멤버 페이지로 이동하고 새롭게 생성한 그룹을 포크된 프로젝트에 초대합니다.