포크를 통한 Merge Request에서의 협업
포크에서 Merge Request을 열 때, 상위 멤버들이 당신의 브랜치에서 협업할 수 있도록 허용할 수 있습니다. 이 옵션을 활성화하면 대상 브랜치에 Merge할 권한이 있는 멤버들이 Merge Request의 소스 브랜치에 쓰기 권한을 얻게 됩니다.
상위 프로젝트의 멤버들은 그 후에 Merge하기 전에 작은 수정이나 리베이스 브랜치를 만들 수 있습니다.
이 기능은 공개로 접근 가능한 포크된 프로젝트 간의 Merge Request에서 제공됩니다.
상위 멤버로부터의 커밋 허용
Merge Request의 작성자로서, 프로젝트의 상위 멤버들로부터의 커밋 편집을 허용할 수 있습니다:
- Merge Request을 생성하거나 편집하는 동안, Contribution으로 스크롤하고 대상 브랜치로 Merge할 수 있는 멤버로부터의 커밋 허용 확인란을 선택하세요.
- Merge Request을 생성을 완료하세요.
Merge Request을 생성한 후에, Merge Request 위젯에 Merge할 수 있는 멤버가 커밋을 추가할 수 있습니다 메시지가 표시됩니다. 상위 멤버들은 그 후에 다음을 할 수 있습니다:
- 직접 브랜치에 커밋합니다.
- Merge Request의 파이프라인과 작업을 다시 시도합니다.
상위 멤버로부터의 커밋 방지
Merge Request의 작성자로서, 프로젝트의 상위 멤버들로부터의 커밋 편집을 방지할 수 있습니다:
- Merge Request을 생성하거나 편집하는 동안, Contribution으로 스크롤하고 대상 브랜치로 Merge할 수 있는 멤버로부터의 커밋 허용 확인란을 해제하세요.
- Merge Request을 생성을 완료하세요.
상위 멤버로서의 포크로 푸시
만약:
- Merge Request의 작성자가 상위 멤버들로부터의 기여를 활성화했다면
- 당신이 상위 프로젝트에서 적어도 Developer 역할을 가지고 있다면
다음 예시에서:
- 포크된 리포지터리 URL은
git@gitlab.com:contributor/forked-project.git
입니다. - Merge Request의 브랜치는
fork-branch
입니다.
기여자의 Merge Request을 변경하거나 커밋을 추가하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾으세요.
- 코드 > Merge Request를 선택하고 Merge Request을 찾으세요.
- 우측 상단 모서리에서 코드를 선택한 다음 브랜치 확인을 선택하세요.
- 대화 상자에서 복사를 선택하세요 ().
-
터미널에서 리포지터리의 복제 버전으로 이동하고, 명령어를 붙여넣으세요. 예를 들면:
git fetch "git@gitlab.com:contributor/forked-project.git" 'fork-branch' git checkout -b 'contributor/fork-branch' FETCH_HEAD
이 명령들은 포크된 프로젝트에서 브랜치를 가져와 당신이 작업할 수 있도록 로컬 브랜치를 생성합니다.
- 로컬 복사본의 브랜치를 수정한 다음, 커밋하세요.
-
로컬 변경 사항을 포크된 프로젝트에 푸시하세요. 다음 명령어는 로컬 브랜치
contributor/fork-branch
를git@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 페이지에서 파이프라인 상태를 보려면:
- 모든 상위 멤버를 포함하는 그룹을 만드세요.
- 왼쪽 사이드바에서 포크된 프로젝트를 선택하고, 프로젝트를 찾으세요.
- 포크된 프로젝트의 관리 > 멤버 페이지로 이동하고, 새로 만든 그룹을 포크된 프로젝트에 초대하세요.