Correggi l'errore GitLab: "non sei autorizzato a inviare codice ai rami protetti su questo progetto"?


327

Ho un problema quando invio i miei codici a git mentre ho accesso da sviluppatore nel mio progetto, ma tutto va bene quando ho accesso master. Da dove viene il problema? E come ripararlo?

Messaggio di errore:

errore: non è consentito inviare il codice ai rami protetti su questo progetto.
...
errore: impossibile inviare alcuni riferimenti a ...


La risposta di Hcorg è una buona soluzione. C'è un altro problema con esso. Se il progetto ha appena creato e non ha ancora alcun ramo. Se fai clic su "Rami protetti", verrà reindirizzato alla home page del progetto. Creare un ramo funzionerà.
pdwjun,

Vedi anche stackoverflow.com/a/61964599/6309 , con GitLab 13,0 (maggio 2020), in cui è possibile attivare a livello di gruppo di protezione ramo di default.
VonC

Risposte:


506

non c'è problema: tutto funziona come previsto.

In GitLab alcuni rami possono essere protetti. Per impostazione predefinita, solo gli utenti Maintainer / Owner possono eseguire il commit nei rami protetti (vedere i documenti delle autorizzazioni ). masterbranch è protetto per impostazione predefinita: obbliga gli sviluppatori a emettere richieste di unione che devono essere convalidate dai manutentori del progetto prima di integrarle nel codice principale.

È possibile attivare e disattivare la protezione sui rami selezionati in Impostazioni progetto (dove dipende esattamente dalla versione di GitLab - vedere le istruzioni di seguito).

Nella stessa pagina delle impostazioni puoi anche consentire agli sviluppatori di inserire i rami protetti. Con questa impostazione attiva, la protezione si limiterà a rifiutare le operazioni che richiedono git push --force(rebase ecc.)

Da GitLab 9.3

Vai al progetto: "Impostazioni" → "Repository" → "Espandi" in "Rami protetti"

inserisci qui la descrizione dell'immagine

Non sono davvero sicuro quando è stata introdotta questa modifica, gli screenshot sono dalla versione 10.3.

Ora puoi selezionare a chi è consentito unire o spingere nei rami selezionati (ad esempio: puoi disattivare tutti i push master, forzando tutte le modifiche al ramo da effettuare tramite Richieste di unione). Oppure puoi fare clic su "Rimuovi protezione" per rimuovere completamente la protezione dal ramo.

Da GitLab 9.0

Analogamente a GitLab 9.3, ma non è necessario fare clic su "Espandi": tutto è già espanso:

Vai al progetto: "Impostazioni" → "Repository" → scorri verso il basso fino a "Rami protetti".

inserisci qui la descrizione dell'immagine

Pre GitLab 9.0

Progetto: "Impostazioni" → "Rami protetti" (se si è almeno "Master" di un determinato progetto).

Impostazioni → Rami protetti

Quindi fare clic su "Annulla protezione" o "Gli sviluppatori possono spingere":

inserisci qui la descrizione dell'immagine


Non dimenticare che potrebbero essere necessarie alcune autorizzazioni. Come indicato in docs.gitlab.com/ee/user/project/protected_branches.html , almeno "Livello di autorizzazione principale". Nel mio caso, premendo su una rotellina delle impostazioni viene visualizzata solo l'opzione "Lascia progetto".
CoolMind,

1
Per qualche motivo ho dovuto improvvisamente aggiungermi come utente principale per il mio progetto.
jgillich,

3
Ho riscontrato questo problema perché NON ero un membro del mio PROPRIO progetto e ho già spinto questo progetto ... Per cambiarlo, nel progetto tour, fai clic sull'ingranaggio, Membri, cerca il tuo utente, assegnagli un ruolo e fai clic su "Aggiungi utenti da proiettare ".
Loenix,

Strano, anche io, ho dovuto includermi in un progetto personale su gitlab.com
Thomas Decaux,

1
È positivo se sei l'unico manutentore o sviluppatore, quindi puoi modificare l'impostazione e giocarci. Ma se c'è una squadra che lavora sul repository, non è una buona pratica cambiare la protezione del repository.
Mnemo,

27

per GitLab Enterprise Edition 9.3.0

Per impostazione predefinita, il ramo principale è protetto in modo da non proteggere :)

1-Seleziona il tuo "progetto"

2-Seleziona "Repository"

3-Seleziona "rami"

4-Seleziona "Impostazioni progetto"

5-In "Rami protetti" fai clic per "espandere"

6 e dopo fare clic sul pulsante "non protetto"


Non avevo "rami" perché non ho ancora creato alcun file su questo repository. Ho creato Readme.md e sono comparsi i rami.
Ikrom,

1

Ho riscontrato questo errore su "un ramo vuoto" sul mio server gitlab locale. Alcune persone hanno affermato che "non puoi spingere per la prima volta su un ramo vuoto". Ho provato a creare un semplice file README su gitlab tramite il mio browser. Quindi tutto è stato risolto incredibilmente e il problema è stato risolto !! Dico che ero il maestro e che il ramo non era protetto.


Questo è strano per me e considero questo problema come un bug gitlab. È inaccettabile per me non avere il permesso di inserire un repository vuoto. Spero che i ragazzi abbiano una risposta per questo.
Vahid F


1

Soluzione semplice per questo problema per avere una chat veloce con la persona che ha il ruolo di proprietario in gitlab. Può inviare un file READ.md o simile per iniziare. Più tardi, tutto funzionerà come prima.


Se possibile, prova a ottenere il ruolo di proprietario nel repository. Una volta che hai il ruolo di proprietario, puoi impegnarti direttamente in master. È fastidioso ma un gancio preventivo non creare nuovi progetti indesiderati. Non c'è hack in giro fino a quando il proprietario del repository non invia il primo file o non si ha il ruolo di proprietario. Spero che questo ti aiuti.
Kris,

1

Ero su Windows quando è apparso questo problema.

L'errore è strano perché succede prima che potessi inserire il mio nome utente e la mia password. E se ci fosse una cache o qualcosa del genere? Lo scavo online e ho trovato questa risposta sul forum di supporto di gitlab :

Apro "Pannello di controllo => Account utente => Gestisci le tue credenziali => Credenziali di Windows" Ne ho trovate due per https: //@github.com e una era l'utente sbagliato. L'ho eliminato e al successivo "git push" sono stato ripreso e fornito le credenziali corrette e ha funzionato! Alcune altre note - questo potrebbe essere successo con qualsiasi telecomando Git.

Nelle credenziali di Windows, ho trovato due voci GitLab per un vecchio account. Rimuovo entrambi e ora funziona!

Il pannello:

inserisci qui la descrizione dell'immagine


@YanickSenn Prego. Ho perso molto tempo su questo. Sono contento che aiuti.
aloisdg si trasferisce su codidact.com il

1

Questo è considerato come funzionalità in Gitlab.

Maintainer / Ownerl'accesso non è mai in grado di forzare nuovamente il push per il ramo predefinito e protetto, come indicato in questo documento inserisci qui la descrizione dell'immagine


1
In realtà questo non è affatto sfortunato. È sicuramente una buona cosa. È un ulteriore livello di protezione.
Chiramisu,

0

Ho riscontrato lo stesso problema sul mio repository. Sono il padrone del repository, ma ho avuto un tale errore.

Non ho protetto il mio progetto e poi ho nuovamente protetto e l'errore è scomparso.

Avevamo aggiornato la versione gitlab tra la mia precedente spinta e quella problematica. Suppongo che questo aggiornamento abbia creato il bug.


0

Le soluzioni di cui sopra spiegano chiaramente qual è il problema; quando non si ha il controllo sul repository, il modo migliore per inviare il proprio codice è quello di creare un fork del repository originale e inviare il proprio codice a questo nuovo repository in modo da poterlo spingere verso quello originale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.