포크를 통한 병합 요청 협업

Tier: Free, Premium, Ultimate Offering: GitLab.com, 자체 관리, GitLab 전용

포크에서 병합 요청을 열 때, 상위 브랜치 멤버들이 귀하의 브랜치에서 협업할 수 있도록 허용할 수 있습니다. 이 옵션을 활성화하면 대상 브랜치에 병합할 권한이 있는 멤버들이 병합 요청의 소스 브랜치에 쓸 수 있는 권한이 부여됩니다.

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

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

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

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

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

병합 요청을 만든 후, 병합 요청 위젯에 병합할 수 있는 멤버가 커밋을 추가할 수 있습니다 메시지가 표시됩니다. 그 후 상위 멤버들은 다음을 수행할 수 있습니다:

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

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

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

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

상위 멤버로서 포크에 푸시하기

상위 프로젝트 멤버로서, 만약:

  • 병합 요청의 작성자가 상위 멤버로부터의 기여를 활성화했다면
  • 상위 프로젝트에 대해 적어도 Developer 역할을 가지고 있다면

다음 예제에서:

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

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

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 귀하의 프로젝트를 찾습니다.
  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. 로컬 변경 사항을 포크된 프로젝트로 푸시합니다. 다음 명령은 로컬 브랜치 contributor/fork-branchgit@gitlab.com:contributor/forked-project.gitfork-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. 포크된 프로젝트에서 관리(Manage) > 멤버(Members) 페이지로 이동하고 새로 만든 그룹을 포크된 프로젝트에 초대합니다.