GitLab 오류 수정 :“이 프로젝트에서 보호 된 분기로 코드를 푸시 할 수 없습니다”?


327

프로젝트에 개발자 액세스 권한이있는 동안 코드를 git으로 푸시하면 문제가 있지만 마스터 액세스 권한이 있으면 모든 것이 정상입니다. 문제는 어디에서 발생합니까? 그리고 그것을 고치는 방법?

에러 메시지:

오류 :이 프로젝트에서 보호 된 분기로 코드를 푸시 할 수 없습니다.
...
오류 : 일부 참조를 푸시하지 못했습니다 ...


Hcorg의 답변은 좋은 해결책입니다. 다른 문제가 있습니다. 프로젝트가 방금 생성했지만 아직 분기가없는 경우 "보호 된 분기"를 클릭하면 프로젝트 홈 페이지로 리디렉션됩니다. 지점 만들기가 작동합니다.
pdwjun

그룹 수준 기본 분기 보호를 활성화 할 수있는 GitLab 13.0 (2020 년 5 월)과 함께 stackoverflow.com/a/61964599/6309 도 참조하십시오 .
VonC

답변:


506

문제가 없습니다. 모든 것이 예상대로 작동합니다.

GitLab에서는 일부 브랜치를 보호 할 수 있습니다. 기본적으로 유지 관리 / 소유자 사용자 만 보호 된 분기에 커밋 할 수 있습니다 ( 권한 문서 참조 ). master브랜치 (branch)는 기본적으로 보호되어 있으며, 개발자는 메인 코드에 통합하기 전에 프로젝트 관리자가 병합 요청을 검증하도록 강제합니다.

프로젝트 설정에서 선택한 브랜치에 대한 보호 기능을 켜고 끌 수 있습니다 (GitLab 버전에 따라 다릅니다. 아래 지침 참조).

동일한 설정 페이지에서 개발자가 보호 된 분기로 푸시 할 수도 있습니다. 이 설정을 사용하면 보호가 필요한 작업 거부 git push --force(리베이스 등) 로 제한됩니다 .

GitLab 9.3부터

"설정된"→ "저장소"→ "보호 된 분기"의 "확장"프로젝트로 이동하십시오.

여기에 이미지 설명을 입력하십시오

이 변경 사항이 언제 도입되었는지 잘 모르겠습니다. 스크린 샷은 10.3 버전입니다.

이제 선택한 분기로 병합 또는 푸시 할 수있는 사용자를 선택할 수 있습니다 (예 : 푸시 요청 master을 전혀 해제 하여 분기에 대한 모든 변경을 병합 요청을 통해 수행하도록 할 수 있음). 또는 "보호 해제"를 클릭하여 분기에서 보호를 완전히 제거 할 수 있습니다.

GitLab 9.0부터

GitLab 9.3과 유사하지만 "확장"을 클릭 할 필요가 없습니다. 모든 것이 이미 확장되었습니다 :

"설정"→ "저장소"→ 프로젝트로 이동하여 "보호 된 분기"로 스크롤하십시오.

여기에 이미지 설명을 입력하십시오

프리 깃랩 9.0

프로젝트 : "설정"→ "보호 된 지점"(지정된 프로젝트의 '마스터'이상인 경우).

설정 → 보호 된 분기

그런 다음 "보호 해제"또는 "개발자가 푸시 할 수 있음"을 클릭하십시오.

여기에 이미지 설명을 입력하십시오


일부 권한이 필요할 수 있음을 잊지 마십시오. docs.gitlab.com/ee/user/project/protected_branches.html에 명시된 바와 같이 최소한 '마스터 권한 수준'. 필자의 경우 설정 휠을 누르면 '프로젝트 떠나기'옵션 만 표시됩니다.
CoolMind

1
어떤 이유로 나는 갑자기 내 프로젝트의 마스터 사용자로 나를 추가해야했다.
jgillich

3
내 OWN 프로젝트의 멤버가 아니기 때문에이 문제가 발생했습니다. 이미이 프로젝트를 진행했습니다 ... 프로젝트를 변경하려면 둘러보기 프로젝트에서 기어, 멤버를 클릭하고 사용자를 검색하고 역할을 지정한 후 "추가"를 클릭하십시오. 프로젝트 할 사용자 "
Loenix

이상한 것도 나와 함께 gitlab.com의 개인 프로젝트에 참여해야했습니다
Thomas

1
당신이 유일한 관리자 또는 개발자 인 경우에 좋으므로 설정을 변경하고 사용할 수 있습니다. 그러나 레포에 대한 팀이 있다면 레포의 보호를 변경하는 것은 좋은 습관이 아닙니다.
Mnemo

26

GitLab Enterprise Edition 9.3.0 용

기본적으로 마스터 브랜치는 보호되므로 보호 해제하십시오. :)

1- "프로젝트"를 선택하십시오

2- "리포지토리"를 선택하십시오

3- "분기"를 선택하십시오

4- "프로젝트 설정"을 선택하십시오

5- "보호 된 지점"에서 "확장"하려면 클릭

6- "보호 해제"버튼을 클릭 한 후


이 저장소에 아직 파일을 만들지 않았기 때문에 "분기"가 없었습니다. Readme.md를 만들었고 가지가 나타났습니다.
Ikrom

1

로컬 gitlab 서버의 "빈 지점"에서이 오류가 발생했습니다. 어떤 사람들은 "빈 지점에서 처음으로 밀 수 없다"고 언급했습니다. 브라우저를 통해 gitlab에 간단한 README 파일을 만들려고했습니다. 그런 다음 모든 것이 놀랍게 수정되었고 문제가 해결되었습니다! 나는 내가 주인이고 지점이 보호되지 않았다고 언급했다.


이것은 나에게 이상 하며이 문제를 gitlab 버그로 생각합니다. 빈 저장소로 밀어 넣을 수있는 권한이 없어서는 안됩니다. 나는 git 녀석이 그것에 대한 답을 갖기를 바랍니다.
Vahid F


1

이 문제에 대한 간단한 해결책은 gitlab에서 소유자 역할을하는 사람과 빠른 대화를 나누는 것입니다. 그는 하나의 파일 READ.md 또는 유사 파일을 밀어서 시작할 수 있습니다. 나중에 모든 것이 이전과 같이 작동합니다.


가능하면 저장소에서 소유자 역할을 가져 오십시오. 소유자 역할이 있으면 직접 마스터에 커밋 할 수 있습니다. 원치 않는 새 프로젝트를 생성하지 않는 것은 성가신 일이지만 예방 후크입니다. repo의 소유자가 첫 번째 파일을 푸시하거나 소유자 역할을 가질 때까지 해킹이 없습니다. 도움이 되었기를 바랍니다.
kris sep

1

이 문제가 나타 났을 때 나는 Windows에있었습니다.

사용자 이름과 비밀번호를 입력하기 전에 오류가 발생하기 때문에 이상합니다. 캐시 나 이와 비슷한 것이 있다면 어떨까요? 나는 그것을 온라인으로 파고 gitlab의 지원 포럼 에서이 답변을 찾았습니다 .

"제어판 => 사용자 계정 => 자격 증명 관리 => Windows 자격 증명"을 엽니 다. https : //@github.com에 대해 두 개를 찾았고 하나는 잘못된 사용자였습니다. 나는 그것을 삭제하고 다음 "git push"에서 올바른 자격 증명을 제공하고 다시 제공했습니다. 다른 참고 사항-이것은 git 리모컨에서 발생할 수 있습니다.

Windows 자격 증명에서 이전 계정에 대한 두 개의 GitLab 항목을 찾았습니다. 둘 다 제거하면 이제 작동합니다!

패널 :

여기에 이미지 설명을 입력하십시오


@YanickSenn 천만에요. 나는 이것에 많은 시간을 잃었다. 도움이되어 기쁘다.
aloisdg codidact.com으로 이사

1

이것은 Gitlab의 기능으로 간주됩니다.

Maintainer / Owner이 문서에 명시된 것처럼 액세스는 기본 및 보호 분기에 대해 강제로 다시 푸시 할 수 없습니다. 여기에 이미지 설명을 입력하십시오


1
실제로 이것은 전혀 불행하지 않습니다. 확실히 좋은 일입니다. 추가 보호 계층입니다.
치라 미수

0

내 저장소에서 동일한 문제가 발생했습니다. 나는 저장소의 주인이지만 그런 오류가있었습니다.

프로젝트의 보호를 해제 한 다음 다시 보호하고 오류가 사라졌습니다.

우리는 이전 푸시와 문제가있는 푸시 사이에서 gitlab 버전을 업그레이드했습니다. 이 업그레이드로 버그가 발생했다고 가정합니다.


0

위의 솔루션은 문제가 무엇인지 명확하게 설명합니다. 리포지토리를 제어 할 수없는 경우 코드를 제출하는 가장 좋은 방법은 원본 리 포크의 포크를 만들고이 새로운 리포지토리에 코드를 제출하여 나중에 원래 리포지토리로 푸시하는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.