Corrija o erro do GitLab: “você não tem permissão para enviar código para ramificações protegidas neste projeto”?

327

Tenho um problema quando pressiono meus códigos para git enquanto tenho acesso de desenvolvedor no meu projeto, mas tudo fica bem quando tenho acesso de mestre. De onde veio o problema? e como consertar isso?

Mensagem de erro:

erro: você não tem permissão para enviar código para ramificações protegidas neste projeto.
...
erro: falha ao enviar algumas referências para ...

Fachrein Rachim Muhamad
fonte
A resposta de Hcorg é uma boa solução. Há outro problema com isso. Se o projeto acabou de criar e ainda não possui ramificação. Se clicar em "Ramificações protegidas", ele será redirecionado para a página inicial do projeto. Criar uma filial funcionará.
pdwjun
Consulte também stackoverflow.com/a/61964599/6309 , com GitLab 13.0 (maio de 2020), onde você pode ativar a proteção de filial padrão em nível de grupo.
VonC

Respostas:

506

não há problema - tudo funciona como esperado.

No GitLab, algumas ramificações podem ser protegidas. Por padrão, apenas os usuários Mantenedores / Proprietários podem confirmar com ramificações protegidas (consulte documentos de permissões ).masterbranch é protegido por padrão - força os desenvolvedores a emitir solicitações de mesclagem a serem validadas pelos mantenedores do projeto antes de integrá-las ao código principal.

Você pode ativar e desativar a proteção em ramificações selecionadas nas Configurações do projeto (onde depende exatamente da versão do GitLab - veja as instruções abaixo).

Na mesma página de configurações, você também pode permitir que os desenvolvedores entrem nas ramificações protegidas. Com essa configuração ativada, a proteção será limitada a rejeitar operações que exijamgit push --force (rebase, etc.)

Desde o GitLab 9.3

Vá para o projeto: "Configurações" → "Repositório" → "Expandir" em "Ramos protegidos"

insira a descrição da imagem aqui

Não tenho muita certeza de quando essa alteração foi introduzida, as capturas de tela são da versão 10.3.

Agora você pode selecionar quem tem permissão para mesclar ou enviar para as ramificações selecionadas (por exemplo: você pode desativar os toques master, forçando todas as alterações na ramificação a serem feitas via Solicitações de mesclagem). Ou você pode clicar em "Desproteger" para remover completamente a proteção da ramificação.

Desde o GitLab 9.0

Similar ao GitLab 9.3, mas não é necessário clicar em "Expandir" - tudo já está expandido:

Vá para o projeto: "Configurações" → "Repositório" → role para baixo até "Ramos protegidos".

insira a descrição da imagem aqui

Pré GitLab 9.0

Projeto: "Configurações" → "Ramificações protegidas" (se você é pelo menos 'Mestre' de um determinado projeto).

Configurações → Ramos protegidos

Em seguida, clique em "Desproteger" ou "Os desenvolvedores podem enviar":

insira a descrição da imagem aqui

Hcorg
fonte
Não esqueça que podem ser necessárias algumas permissões. Conforme declarado em docs.gitlab.com/ee/user/project/protected_branches.html , pelo menos 'Nível de permissão principal'. No meu caso, pressionar uma roda de configurações mostra apenas a opção 'Sair do projeto'.
CoolMind 28/08/16
1
Por alguma razão, de repente tive que me adicionar como usuário mestre para o meu próprio projeto.
Jgillich 17/09/16
3
Eu tive esse problema porque eu não era um membro do meu próprio projeto e já o desenvolvi ... Para alterá-lo, no projeto do tour, clique na engrenagem, Membros, procure seu usuário, dê uma função e clique em "Adicionar usuários para projetar ".
Loenix 19/09/16
Estranho, eu também, tive que me incluo em um projeto personnal no gitlab.com
Thomas Decaux
1
É bom que você seja o único mantenedor ou desenvolvedor, para poder alterar a configuração e brincar com ela. Mas se houver uma equipe trabalhando no repositório, não é uma boa prática alterar a proteção do repositório.
Mnemo
27

para o GitLab Enterprise Edition 9.3.0

Por padrão, a ramificação principal é protegida para não proteger :)

1-Selecione seu "projeto"

2-Selecione "Repositório"

3-Selecione "ramificações"

4-Selecione "Configurações do projeto"

5-Em "Ramos protegidos", clique para "expandir"

6 e depois clique no botão "desproteger"

krekto
fonte
Eu não tinha "ramificações" porque ainda não criei nenhum arquivo neste repositório. Eu criei o Readme.md e os branches apareceram.
Ikrom 16/08/19
1

Eu encontrei esse erro em "uma ramificação vazia" no meu servidor gitlab local. Algumas pessoas mencionaram que "você não pode pressionar pela primeira vez em um galho vazio". Tentei criar um arquivo README simples no gitlab através do meu navegador. Então tudo foi corrigido de maneira surpreendente e o problema resolvido !! Mencionei que eu era o mestre e o ramo não estava protegido.

Vahid F
fonte
Isso é estranho para mim e considero esse problema um bug do gitlab. É inaceitável para mim não ter permissão para entrar em um repositório vazio. Espero que os caras do idiota tenham uma resposta para isso.
Vahid F
1

Solução simples para esse problema, para conversar rapidamente com a pessoa que possui função de proprietário no gitlab. Ele pode enviar um arquivo READ.md ou similar para começar. Mais tarde, tudo estará funcionando como antes.

kris
fonte
Se possível, tente obter a função de proprietário no repositório. Depois de ter a função de proprietário, você pode se comprometer diretamente com o mestre. É um gancho irritante, mas preventivo, para não criar novos projetos indesejados. Não há truques até o proprietário do repositório enviar o primeiro arquivo ou você ter a função de proprietário. Espero que isto ajude.
kris
1

Eu estava no Windows quando este problema apareceu.

O erro é estranho porque acontece antes que eu possa inserir meu nome de usuário e minha senha. E se houvesse um cache ou algo assim? Eu o busquei on-line e encontrei esta resposta no fórum de suporte do gitlab :

Eu abro "Painel de Controle => Contas de Usuário => Gerenciar suas credenciais => Credenciais do Windows" Encontrei duas para https: //@github.com e uma delas era o usuário errado. Excluí-o e, no próximo "git push", fui redirecionado e forneci as credenciais corretas e funcionou! Algumas outras notas - isso poderia ter acontecido com qualquer controle remoto do git.

Nas credenciais do Windows, encontrei duas entradas do GitLab para uma conta antiga. Eu removo os dois e agora funciona!

O painel:

insira a descrição da imagem aqui

aloisdg movendo-se para codidact.com
fonte
@YanickSenn De nada. Perdi muito tempo com isso. Ainda bem que ajuda.
aloisdg movendo-se para codidact.com
1

Isso é considerado um recurso no Gitlab.

Maintainer / Ownero acesso nunca poderá forçar o envio novamente para a ramificação padrão e protegida, conforme declarado nesta documentação insira a descrição da imagem aqui

mochadwi
fonte
1
Na verdade, isso não é lamentável. Definitivamente, é uma coisa boa. É uma camada extra de proteção.
Chiramisu 03/06
0

Eu experimentei o mesmo problema no meu repositório. Eu sou o mestre do repositório, mas tive um erro.

Eu desprotegi meu projeto e depois me protegi novamente, e o erro se foi.

Atualizamos a versão do gitlab entre o push anterior e o problemático. Suponho que esta atualização tenha criado o bug.

jean pierre huart
fonte
0

As soluções acima explicam claramente qual é o problema; quando você não tem controle sobre o repositório, a melhor maneira de enviar seu código é criar um Fork do repositório original e enviá-lo para esse novo repositório, para que você possa enviá-lo para o original.

gogasca
fonte