Napraw błąd GitLab: „nie możesz wypychać kodu do chronionych gałęzi w tym projekcie”?


327

Mam problem, kiedy wypycham moje kody do git, gdy mam dostęp programisty do mojego projektu, ale wszystko jest w porządku, gdy mam dostęp główny. Skąd pochodzi problem? I jak to naprawić?

Komunikat o błędzie:

błąd: Nie możesz przekazywać kodu do chronionych gałęzi tego projektu.
...
błąd: nie udało się przesłać niektórych referencji do ...


Odpowiedź Hcorga jest dobrym rozwiązaniem. Jest z tym kolejny problem. Jeśli projekt właśnie utworzył i nie ma jeszcze gałęzi. Jeśli klikniesz „Chronione gałęzie”, nastąpi przekierowanie do strony głównej projektu. Utworzenie oddziału będzie działać.
pdwjun

Zobacz także stackoverflow.com/a/61964599/6309 z GitLab 13.0 (maj 2020), gdzie można włączyć domyślną ochronę oddziałów na poziomie grupy.
VonC

Odpowiedzi:


506

nie ma problemu - wszystko działa zgodnie z oczekiwaniami.

W GitLab niektóre gałęzie mogą być chronione. Domyślnie tylko użytkownicy Maintainer / Owner mogą zatwierdzać chronione oddziały (patrz dokumentacja uprawnień ). mastergałąź jest domyślnie chroniona - zmusza deweloperów do wydawania żądań scalenia do sprawdzenia przez opiekunów projektu przed zintegrowaniem ich z głównym kodem.

Możesz włączyć i wyłączyć ochronę wybranych gałęzi w Ustawieniach projektu (gdzie dokładnie zależy od wersji GitLab - patrz instrukcje poniżej).

Na tej samej stronie ustawień możesz także zezwolić programistom na wypychanie do chronionych gałęzi. Po włączeniu tego ustawienia ochrona będzie ograniczona do odrzucania operacji wymagających git push --force(bazowania itp.)

Od GitLab 9.3

Przejdź do projektu: „Ustawienia” → „Repozytorium” → „Rozwiń” w „Chronionych oddziałach”

wprowadź opis zdjęcia tutaj

Nie jestem pewien, kiedy ta zmiana została wprowadzona, zrzuty ekranu pochodzą z wersji 10.3.

Teraz możesz wybrać, kto może łączyć lub wypychać do wybranych gałęzi (na przykład: możesz masterw ogóle wyłączyć wypychania , zmuszając wszystkie zmiany w gałęzi do wprowadzenia za pośrednictwem żądań scalenia). Lub możesz kliknąć „Nie chroń”, aby całkowicie usunąć ochronę z oddziału.

Od GitLab 9.0

Podobnie jak GitLab 9.3, ale nie trzeba klikać „Rozwiń” - wszystko jest już rozwinięte:

Przejdź do projektu: „Ustawienia” → „Repozytorium” → przewiń w dół do „Chronionych gałęzi”.

wprowadź opis zdjęcia tutaj

Przed GitLab 9.0

Projekt: „Ustawienia” → „Chronione gałęzie” (jeśli jesteś przynajmniej „Mistrzem” danego projektu).

Ustawienia → Chronione oddziały

Następnie kliknij „Unprotect” lub „Developers can push”:

wprowadź opis zdjęcia tutaj


Nie zapominaj, że mogą być wymagane pewne uprawnienia. Jak stwierdzono w docs.gitlab.com/ee/user/project/protected_branches.html , co najmniej „Poziom uprawnień administratora”. W moim przypadku naciśnięcie pokrętła ustawień pokazuje tylko opcję „Wyjdź z projektu”.
CoolMind,

1
Z jakiegoś powodu nagle musiałem dodać siebie jako główny użytkownik własnego projektu.
jgillich

3
Mam ten problem, ponieważ NIE byłem członkiem mojego własnego projektu i już naciskałem na ten projekt ... Aby go zmienić, w projekcie trasy kliknij koło zębate, Członkowie, wyszukaj użytkownika, nadaj mu rolę i kliknij „Dodaj użytkownicy do projektu ”.
Loenix,

Dziwne, ja również, musiałem włączyć się w osobisty projekt na gitlab.com
Thomas Decaux,

1
Dobrze jest, jeśli jesteś jedynym opiekunem lub programistą, więc możesz zmienić to ustawienie i bawić się nim. Ale jeśli zespół pracuje nad repozytorium, zmiana dobrej ochrony repo nie jest dobrą praktyką.
Mnemo

26

dla GitLab Enterprise Edition 9.3.0

Domyślnie gałąź master jest chroniona, więc nie chroń :)

1-Wybierz „projekt”

2-Wybierz „Repozytorium”

3-Wybierz „oddziały”

4-Wybierz „Ustawienia projektu”

5-W „Protected Branch” kliknij, aby „rozwinąć”

6-i po kliknięciu przycisku „nie chroń”


Nie miałem „oddziałów”, ponieważ nie utworzyłem jeszcze żadnego pliku w tym repozytorium. Utworzyłem Readme.md i pojawiły się gałęzie.
Ikrom

1

Ten błąd wystąpił w „pustej gałęzi” na moim lokalnym serwerze gitlab. Niektóre osoby wspomniały, że „nie można po raz pierwszy naciskać na pustą gałąź”. Próbowałem utworzyć prosty plik README na gitlab za pomocą mojej przeglądarki. Potem wszystko naprawiło się niesamowicie i problem rozwiązany !! Wspominam, że byłem mistrzem, a gałąź nie była chroniona.


Jest to dla mnie dziwne i uważam ten problem za błąd gitlab. Niedopuszczalne jest dla mnie to, że nie mam pozwolenia na wtargnięcie w puste repozytorium. Mam nadzieję, że chłopaki mają na to odpowiedź.
Vahid F


1

Prostym rozwiązaniem tego problemu jest szybka rozmowa z osobą, która pełni rolę właściciela w gitlab. Może pchać jeden plik READ.md lub podobny, aby rozpocząć. Później wszystko będzie działać jak wcześniej.


Jeśli to możliwe, spróbuj uzyskać rolę właściciela w repozytorium. Gdy już będziesz mieć rolę właściciela, możesz bezpośrednio zatwierdzić master. Irytujące, ale zapobiegawcze, haczyk nie tworzy niechcianych nowych projektów. Nie ma żadnych hacków, dopóki właściciel repo nie wypchnie pierwszego pliku lub nie będziesz mieć roli właściciela. Mam nadzieję że to pomoże.
kris,

1

Byłem w systemie Windows, kiedy pojawił się ten problem.

Błąd jest dziwny, ponieważ zdarza się, zanim mogę wprowadzić swoją nazwę użytkownika i hasło. Co jeśli byłby bufor lub coś takiego? Kopię go w Internecie i znalazłem tę odpowiedź na forum pomocy technicznej gitlab :

Otwieram „Panel sterowania => Konta użytkowników => Zarządzaj swoimi poświadczeniami => Poświadczenia systemu Windows” Znalazłem dwa dla https: //@github.com i jeden był niewłaściwym użytkownikiem. Usunąłem go i przy następnym „git push” zostałem ponownie poproszony o podanie poprawnych danych uwierzytelniających i zadziałało! Kilka innych notatek - mogło się to zdarzyć z dowolnym pilotem git.

W poświadczeniach systemu Windows znalazłem dwa wpisy GitLab dla starego konta. Usuwam oba i teraz działa!

Panel:

wprowadź opis zdjęcia tutaj


@YanickSenn Nie ma za co. Straciłem przy tym dużo czasu. Cieszę się, że to pomaga.
aloisdg przechodzi na codidact.com

1

Jest to uważane za funkcje Gitlab.

Maintainer / OwnerDostęp nigdy nie jest w stanie wymusić ponownego wciśnięcia dla domyślnej i chronionej gałęzi, jak stwierdzono w tych dokumentach wprowadź opis zdjęcia tutaj


1
W rzeczywistości nie jest to wcale niefortunne. To zdecydowanie dobra rzecz. To dodatkowa warstwa ochrony.
Chiramisu

0

Ten sam problem wystąpił w moim repozytorium. Jestem panem repozytorium, ale miałem taki błąd.

Nie chroniłem mojego projektu, a następnie ponownie go zabezpieczyłem i błąd zniknął.

Uaktualniliśmy wersję gitlab między moim poprzednim pchnięciem a problematycznym. Przypuszczam, że to uaktualnienie spowodowało błąd.


0

Powyższe rozwiązania jasno wyjaśniają, na czym polega problem; gdy nie masz kontroli nad repozytorium, najlepszym sposobem na przesłanie kodu jest utworzenie Widelca oryginalnego repozytorium i przesłanie kodu do tej nowej repozytorium, aby później można było przenieść ją do oryginalnej.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.