포크를 통한 Merge Request에서의 협업

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

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

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

이 기능은 공개로 접근 가능한 포크된 프로젝트 간의 Merge Request에서 제공됩니다.

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

Merge Request의 작성자로서, 프로젝트의 상위 멤버들로부터의 커밋 편집을 허용할 수 있습니다:

  1. Merge Request을 생성하거나 편집하는 동안, Contribution으로 스크롤하고 대상 브랜치로 Merge할 수 있는 멤버로부터의 커밋 허용 확인란을 선택하세요.
  2. Merge Request을 생성을 완료하세요.

Merge Request을 생성한 후에, Merge Request 위젯에 Merge할 수 있는 멤버가 커밋을 추가할 수 있습니다 메시지가 표시됩니다. 상위 멤버들은 그 후에 다음을 할 수 있습니다:

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

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

Merge Request의 작성자로서, 프로젝트의 상위 멤버들로부터의 커밋 편집을 방지할 수 있습니다:

  1. Merge Request을 생성하거나 편집하는 동안, Contribution으로 스크롤하고 대상 브랜치로 Merge할 수 있는 멤버로부터의 커밋 허용 확인란을 해제하세요.
  2. Merge Request을 생성을 완료하세요.

상위 멤버로서의 포크로 푸시

만약:

  • Merge Request의 작성자가 상위 멤버들로부터의 기여를 활성화했다면
  • 당신이 상위 프로젝트에서 적어도 Developer 역할을 가지고 있다면

다음 예시에서:

  • 포크된 리포지터리 URL은 git@gitlab.com:contributor/forked-project.git 입니다.
  • Merge Request의 브랜치는 fork-branch 입니다.

기여자의 Merge Request을 변경하거나 커밋을 추가하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾으세요.
  2. 코드 > Merge Request를 선택하고 Merge Request을 찾으세요.
  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>
    

문제 해결

포크된 프로젝트의 Merge Request 페이지에서 파이프라인 상태를 확인할 수 없음

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

원래 프로젝트로부터의 Merge Request 페이지에서 파이프라인 상태를 보려면:

  1. 모든 상위 멤버를 포함하는 그룹을 만드세요.
  2. 왼쪽 사이드바에서 포크된 프로젝트를 선택하고, 프로젝트를 찾으세요.
  3. 포크된 프로젝트의 관리 > 멤버 페이지로 이동하고, 새로 만든 그룹을 포크된 프로젝트에 초대하세요.