GitLab त्रुटि को ठीक करें: "आपको इस परियोजना पर संरक्षित शाखाओं के लिए कोड को पुश करने की अनुमति नहीं है"?


326

मेरे पास एक समस्या है जब मैं अपने कोड को अपने प्रोजेक्ट में डेवलपर की पहुंच होने पर धक्का देता हूं, लेकिन जब मेरा मास्टर एक्सेस होता है तो सब कुछ ठीक होता है। समस्या कहां से आ रही है? और इसे कैसे ठीक करें?

त्रुटि संदेश:

त्रुटि: आपको इस परियोजना पर संरक्षित शाखाओं के लिए कोड पुश करने की अनुमति नहीं है।
...
त्रुटि: कुछ refs को आगे बढ़ाने में विफल ...


Hcorg का जवाब एक अच्छा समाधान है। इसके साथ एक और समस्या है। यदि परियोजना अभी बनाई गई है और इसकी अभी तक कोई शाखा नहीं है। यदि "संरक्षित शाखाएं" पर क्लिक करें, तो यह प्रोजेक्ट होम पेज पर रीडायरेक्ट करेगा। एक शाखा बनाएँ काम करेंगे।
pdwjun

GitLab 13.0 (मई 2020) के साथ, stackoverflow.com/a/61964599/6309 भी देखें , जहाँ आप समूह-स्तर की डिफ़ॉल्ट शाखा सुरक्षा को सक्षम कर सकते हैं।
VonC

जवाबों:


505

कोई समस्या नहीं है - सब कुछ उम्मीद के मुताबिक काम करता है।

गिटलैब में कुछ शाखाओं को संरक्षित किया जा सकता है। डिफ़ॉल्ट रूप से केवल Maintainer / Owner उपयोगकर्ता संरक्षित शाखाओं के लिए प्रतिबद्ध हो सकते हैं ( अनुमतियाँ डॉक्स देखें )। masterशाखा डिफ़ॉल्ट रूप से संरक्षित है - यह डेवलपर्स को मुख्य कोड में एकीकृत करने से पहले परियोजना के रखरखावकर्ताओं द्वारा मान्य किए जाने वाले मर्ज अनुरोधों को जारी करने के लिए मजबूर करती है।

आप प्रोजेक्ट सेटिंग्स में चयनित शाखाओं पर सुरक्षा को बंद और चालू कर सकते हैं (जहां वास्तव में GitLab संस्करण पर निर्भर करता है - नीचे दिए गए निर्देश देखें)।

उसी सेटिंग पृष्ठ पर आप डेवलपर्स को संरक्षित शाखाओं में धकेलने की अनुमति भी दे सकते हैं। इस सेटिंग के साथ, सुरक्षा को अस्वीकार करने वाले संचालन git push --force(रिबेस) आदि को सीमित कर दिया जाएगा ।

चूंकि गिटलैब 9.3

प्रोजेक्ट पर जाएं: "सेटिंग्स" → "रिपॉजिटरी" → "संरक्षित शाखाओं" पर "विस्तार करें"

यहां छवि विवरण दर्ज करें

मुझे वास्तव में यकीन नहीं है कि जब यह परिवर्तन पेश किया गया था, तो स्क्रीनशॉट 10.3 संस्करण से हैं।

अब आप चुन सकते हैं कि किसे चयनित शाखाओं में विलय या पुश करने की अनुमति है (उदाहरण के लिए: आप masterसभी में पुश को बंद कर सकते हैं , जिससे शाखा में सभी परिवर्तन मर्ज अनुरोध के माध्यम से किए जा सकते हैं)। या आप शाखा से सुरक्षा को पूरी तरह से हटाने के लिए "असुरक्षित" पर क्लिक कर सकते हैं।

चूंकि गीतालाब 9.0

इसी तरह GitLab 9.3, लेकिन "विस्तार" पर क्लिक करने की आवश्यकता नहीं है - सब कुछ पहले से ही विस्तारित है:

प्रोजेक्ट पर जाएं: "सेटिंग्स" → "रिपॉजिटरी" → नीचे स्क्रॉल करके "संरक्षित शाखाएं"।

यहां छवि विवरण दर्ज करें

प्री गीतालाब 9.0

परियोजना: "सेटिंग" → "संरक्षित शाखाएँ" (यदि आप दिए गए प्रोजेक्ट के कम से कम 'मास्टर' हैं)।

सेटिंग्स → संरक्षित शाखाएँ

फिर "अनप्रोटेक्ट" या "डेवलपर्स पुश कर सकते हैं" पर क्लिक करें:

यहां छवि विवरण दर्ज करें


यह मत भूलो कि कुछ अनुमतियों की आवश्यकता हो सकती है। जैसा कि docs.gitlab.com/ee/user/project/protected_branches.html में बताया गया है , कम से कम 'मास्टर अनुमति स्तर'। मेरे मामले में एक सेटिंग व्हील पर दबाने पर केवल 'प्रोजेक्ट छोड़ें' विकल्प दिखाई देता है।
कूलमैन्ड

1
किसी कारण से मुझे अचानक अपने प्रोजेक्ट के लिए खुद को एक मास्टर उपयोगकर्ता के रूप में जोड़ना पड़ा।
jgillich

3
मुझे यह समस्या इसलिए हुई क्योंकि मैं अपने OWN प्रोजेक्ट का सदस्य नहीं था और मैंने पहले ही इस प्रोजेक्ट पर जोर दिया ... इसे बदलने के लिए, टूर प्रोजेक्ट में, गियर पर क्लिक करें, सदस्य, अपने उपयोगकर्ता को खोजें, इसे एक भूमिका दें और "जोड़ें" पर क्लिक करें उपयोगकर्ताओं को प्रोजेक्ट करने के लिए ”।
Loenix

अजीब बात है, मुझे भी, खुद को gitlab.com पर एक व्यक्तिपरक परियोजना में शामिल करना था
थॉमस

1
यह अच्छा है यदि आप एकमात्र अनुचर या डेवलपर हैं, तो आप सेटिंग को बदल सकते हैं और इसके साथ खेल सकते हैं। लेकिन अगर रेपो पर काम करने वाली टीम है, तो यह रेपो के संरक्षण को बदलने का अच्छा अभ्यास नहीं है।
मेनेमो

26

GitLab Enterprise संस्करण 9.3.0 के लिए

डिफ़ॉल्ट रूप से, मास्टर शाखा संरक्षित है इसलिए असुरक्षित :)

1-आप "प्रोजेक्ट" चुनें

2-चुनें "रिपॉजिटरी"

3-चुनें "शाखाओं"

4-चुनें "परियोजना सेटिंग्स"

5-"संरक्षित शाखाओं" में "विस्तार" पर क्लिक करें

6-और बाद में "असुरक्षित" बटन पर क्लिक करें


मेरे पास "शाखाएँ" नहीं थीं क्योंकि मैंने अभी तक इस भंडार पर कोई फ़ाइल नहीं बनाई थी। मैंने Readme.md बनाया है और शाखाएँ दिखाई दी हैं।
इक्रोम

1

मुझे अपने स्थानीय गिटलैब सर्वर पर "एक खाली शाखा" पर इस त्रुटि का सामना करना पड़ा है। कुछ लोगों ने उल्लेख किया कि "आप पहली बार एक खाली शाखा पर धक्का नहीं दे सकते"। मैंने अपने ब्राउज़र के माध्यम से गिटलैब पर एक सरल README फ़ाइल बनाने की कोशिश की। तब सब कुछ आश्चर्यजनक रूप से तय हो गया और समस्या हल हो गई !! मैं उल्लेख करता हूं कि मैं मास्टर था और शाखा की रक्षा नहीं की गई थी।


यह मेरे लिए अजीब है और मैं इस मुद्दे को गिटलैब बग मानता हूं। यह मेरे लिए अस्वीकार्य है कि किसी खाली रेपो में धकेलने की अनुमति नहीं है। मुझे उम्मीद है कि लोगों के पास इसका जवाब होगा।
वाहिद एफ


1

इस समस्या का सरल समाधान उस व्यक्ति के साथ त्वरित चैट करना है जिसकी गिटलैब में मालिक की भूमिका है। वह एक फ़ाइल READ.md या इसके साथ शुरू करने के लिए समान धक्का दे सकता है। बाद में, सब कुछ पहले की तरह काम कर रहा होगा।


यदि संभव हो, तो भंडार में मालिक की भूमिका पाने की कोशिश करें। एक बार मालिक की भूमिका निभाने के बाद, आप सीधे गुरु के लिए प्रतिबद्ध हो सकते हैं। यह कष्टप्रद है लेकिन निवारक हुक अवांछित नई परियोजनाओं को बनाने के लिए नहीं है। कहीं भी कोई हैक नहीं है जब तक कि रेपो के मालिक पहली फ़ाइल को धक्का न दें या आप मालिक की भूमिका निभाएं। उम्मीद है की यह मदद करेगा।
क्रि।

1

जब यह समस्या सामने आई तो मैं विंडोज पर था।

त्रुटि अजीब है क्योंकि यह मेरे उपयोगकर्ता नाम और पासवर्ड दर्ज करने से पहले होता है। अगर कोई कैश या ऐसा कुछ था तो क्या होगा? मैंने इसे ऑनलाइन खोद लिया और यह उत्तर gitlab के समर्थन मंच पर पाया :

मैं "नियंत्रण कक्ष => उपयोगकर्ता खाता => अपने क्रेडेंशियल प्रबंधित करता हूं => Windows क्रेडेंशियल्स खोलता हूं" मुझे https: //@github.com के लिए दो मिले और एक गलत उपयोगकर्ता था। मैंने इसे हटा दिया और अगले "गिट पुश" पर मुझे फटकार लगाई और सही साख प्रदान की और यह काम किया! कुछ अन्य नोट - यह किसी भी गिट रिमोट के साथ हो सकता है।

विंडोज क्रेडेंशियल में, मुझे एक पुराने खाते के लिए दो GitLab प्रविष्टियां मिलीं। मैं दोनों को हटा देता हूं और अब यह काम करता है!

पैनल:

यहां छवि विवरण दर्ज करें


@YanickSenn आपका स्वागत है। मैंने इस पर बहुत समय गंवाया। खुशी है कि यह मदद करता है।
aloisdg

1

इसे गिटलैब में सुविधाओं के रूप में माना जाता है।

Maintainer / Ownerइस डॉक्स में बताए अनुसार डिफ़ॉल्ट और संरक्षित शाखा के लिए पहुंच को फिर से धक्का देने में सक्षम नहीं है यहां छवि विवरण दर्ज करें


1
वास्तव में यह दुर्भाग्यपूर्ण नहीं है। यह निश्चित रूप से एक अच्छी बात है। यह सुरक्षा की एक अतिरिक्त परत है।
चिरमिसु

0

मैंने अपनी रिपॉजिटरी पर उसी समस्या का अनुभव किया। मैं रिपॉजिटरी का मास्टर हूं, लेकिन मुझे ऐसी त्रुटि हुई थी।

मैंने अपने प्रोजेक्ट को असुरक्षित कर दिया है और फिर दोबारा संरक्षित किया है, और त्रुटि दूर हो गई है।

हमने अपने पिछले पुश और समस्याग्रस्त के बीच gitlab संस्करण को अपग्रेड किया था। मुझे लगता है कि इस उन्नयन ने बग बनाया है।


0

उपरोक्त समाधान स्पष्ट रूप से बताते हैं कि समस्या क्या है; जब आपके पास रेपो पर नियंत्रण नहीं होता है, तो अपने कोड को जमा करने का सबसे अच्छा तरीका मूल रेपो का एक कांटा बनाना है और अपने कोड को इस नए रेपो में जमा करना है ताकि बाद में आप इसे मूल एक पर धकेल सकें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.