แก้ไขข้อผิดพลาด GitLab:“ คุณไม่ได้รับอนุญาตให้ส่งรหัสไปยังสาขาที่ได้รับการป้องกันในโครงการนี้”


327

ฉันมีปัญหาเมื่อฉันผลักรหัสของฉันให้คอมไพล์ในขณะที่ฉันมีสิทธิ์การเข้าถึงของนักพัฒนาในโครงการของฉัน แต่ทุกอย่างก็โอเคเมื่อฉันมีการเข้าถึงหลัก ปัญหามาจากไหน และจะแก้ไขอย่างไร?

ข้อความผิดพลาด:

ข้อผิดพลาด: คุณไม่ได้รับอนุญาตให้ส่งรหัสไปยังสาขาที่ได้รับการป้องกันในโครงการนี้
...
ข้อผิดพลาด: ไม่สามารถส่งการอ้างอิงถึง ...


คำตอบของ Hcorg เป็นทางออกที่ดี มีปัญหาอื่นอีก หากโครงการเพิ่งสร้างและยังไม่มีสาขา หากคลิกที่ "กิ่งที่ได้รับการป้องกัน" มันจะเปลี่ยนเส้นทางไปยังหน้าแรกของโครงการ สร้างสาขาจะทำงาน
pdwjun

ดูเพิ่มเติมที่stackoverflow.com/a/61964599/6309ด้วย GitLab 13.0 (พฤษภาคม 2020) ซึ่งคุณสามารถเปิดใช้การป้องกันสาขาเริ่มต้นระดับกลุ่มได้
VonC

คำตอบ:


506

ไม่มีปัญหา - ทุกอย่างทำงานได้อย่างที่คาดไว้

ใน GitLab บางสาขาสามารถป้องกันได้ โดยค่าเริ่มต้นเฉพาะผู้ดูแล / เจ้าของผู้ใช้สามารถกระทำการป้องกันสาขา (ดูเอกสารสิทธิ์ ) masterสาขาได้รับการป้องกันโดยค่าเริ่มต้น - มันบังคับให้นักพัฒนาออกคำร้องขอการผสานเพื่อตรวจสอบความถูกต้องโดยผู้ดูแลโครงการก่อนที่จะรวมเข้ากับรหัสหลัก

คุณสามารถเปิดและปิดการป้องกันในสาขาที่เลือกในการตั้งค่าโครงการ (ขึ้นอยู่กับรุ่น GitLab - ดูคำแนะนำด้านล่าง)

ในหน้าการตั้งค่าเดียวกันคุณสามารถอนุญาตให้นักพัฒนาผลักเข้าไปในสาขาที่ได้รับการป้องกัน เมื่อเปิดใช้งานการตั้งค่านี้การป้องกันจะ จำกัด อยู่ที่การปฏิเสธการดำเนินการที่ต้องการgit push --force(การรีบูตเป็นต้น)

ตั้งแต่ GitLab 9.3

ไปที่โครงการ: "การตั้งค่า" → "พื้นที่เก็บข้อมูล" → "ขยาย" ใน "สาขาที่ได้รับความคุ้มครอง"

ป้อนคำอธิบายรูปภาพที่นี่

ฉันไม่แน่ใจจริงๆว่าเมื่อใดที่มีการแนะนำการเปลี่ยนแปลงนี้ภาพหน้าจอมาจากรุ่น 10.3

ตอนนี้คุณสามารถเลือกผู้ที่ได้รับอนุญาตให้รวมหรือผลักดันเข้าไปในสาขาที่เลือก (ตัวอย่างเช่น: คุณสามารถปิดการพุชไปmasterเลยบังคับให้การเปลี่ยนแปลงทั้งหมดไปยังสาขาจะต้องทำผ่านคำขอรวม) หรือคุณสามารถคลิก "เลิกป้องกัน" เพื่อลบการป้องกันออกจากสาขาอย่างสมบูรณ์

ตั้งแต่ GitLab 9.0

เช่นเดียวกับ GitLab 9.3 แต่ไม่จำเป็นต้องคลิก "ขยาย" - ทุกอย่างขยายไปแล้ว:

ไปที่โครงการ: "การตั้งค่า" → "พื้นที่เก็บข้อมูล" →เลื่อนลงไปที่ "สาขาที่ได้รับการป้องกัน"

ป้อนคำอธิบายรูปภาพที่นี่

พื้นฐาน GitLab 9.0

โครงการ: "การตั้งค่า" → "สาขาที่ได้รับความคุ้มครอง" (ถ้าคุณเป็น 'อาจารย์' อย่างน้อยในโครงการที่ได้รับ)

การตั้งค่า→ป้องกันสาขา

จากนั้นคลิกที่ "Unprotect" หรือ "Developers สามารถพุช":

ป้อนคำอธิบายรูปภาพที่นี่


อย่าลืมว่าอาจต้องมีการอนุญาตบางอย่าง ตามที่ระบุในdocs.gitlab.com/ee/user/project/protected_branches.htmlอย่างน้อย 'ระดับการอนุญาตระดับปริญญาโท' ในกรณีของฉันการกดบนวงล้อการตั้งค่าจะแสดงเฉพาะตัวเลือก 'ออกจากโครงการ'
CoolMind

1
ด้วยเหตุผลบางอย่างฉันก็ต้องเพิ่มตัวเองเป็นผู้ใช้หลักสำหรับโครงการของตัวเอง
jgillich

3
ฉันได้รับปัญหานี้เพราะฉันไม่ได้เป็นสมาชิกของโครงการของฉันและฉันได้ผลักดันโครงการนี้แล้ว ... หากต้องการเปลี่ยนโครงการทัวร์คลิกเกียร์สมาชิกค้นหาผู้ใช้ของคุณให้บทบาทและคลิก "เพิ่ม ผู้ใช้ไปยังโครงการ "
Loenix

แปลกฉันก็ต้องรวมตัวเองในโครงการส่วนบุคคลใน gitlab.com
โทมัส Decaux

1
เป็นการดีถ้าคุณเป็นผู้ดูแลหรือผู้พัฒนาเพียงคนเดียวดังนั้นคุณสามารถเปลี่ยนการตั้งค่าและเล่นกับมันได้ แต่ถ้ามีทีมที่ทำงานเกี่ยวกับ repo อยู่มันก็ไม่ใช่วิธีที่ดีในการเปลี่ยนการปกป้องของ repo
Mnemo

26

สำหรับ GitLab Enterprise Edition 9.3.0

ตามค่าเริ่มต้นสาขาหลักจะได้รับการป้องกันอย่างปลอดภัย :)

1- เลือกคุณ "โครงการ"

2-Select "Repository"

เลือก 3 "สาขา"

4- เลือก "การตั้งค่าโครงการ"

5 "In Protected Branches" คลิกเพื่อ "ขยาย"

6 และหลังจากคลิกในปุ่ม "unprotect"


ฉันยังไม่มี "สาขา" เพราะฉันยังไม่ได้สร้างไฟล์ใด ๆ ในที่เก็บนี้ ฉันสร้าง Readme.md แล้วสาขาก็ปรากฏขึ้น
Ikrom

1

ฉันพบข้อผิดพลาดนี้ใน "สาขาว่าง" บนเซิร์ฟเวอร์ gitlab ในพื้นที่ของฉัน บางคนกล่าวว่า "คุณไม่สามารถกดเป็นครั้งแรกในสาขาว่าง" ฉันพยายามสร้างไฟล์ README ง่าย ๆ บน gitlab ผ่านเบราว์เซอร์ของฉัน จากนั้นทุกอย่างได้รับการแก้ไขอย่างน่าอัศจรรย์และปัญหาก็แยกออก !! ฉันพูดถึงว่าฉันเป็นเจ้านายและสาขาไม่ได้รับการคุ้มครอง


นี่เป็นเรื่องแปลกสำหรับฉันและฉันคิดว่าปัญหานี้เป็นข้อผิดพลาด gitlab เป็นเรื่องที่ยอมรับไม่ได้สำหรับฉันที่จะไม่ได้รับอนุญาตให้เข้าไปยัง repo ที่ว่างเปล่า ฉันหวังว่าพวกคอมไพล์มีคำตอบสำหรับมัน
Vahid F


1

ทางออกที่ง่ายสำหรับปัญหานี้คือการแชทอย่างรวดเร็วกับบุคคลที่มีบทบาทเจ้าของใน gitlab เขาสามารถผลักดันไฟล์หนึ่งไฟล์ READ.md หรือคล้ายกันให้เริ่มต้นด้วย หลังจากนั้นทุกอย่างจะทำงานเหมือนเดิม


ถ้าเป็นไปได้ลองรับบทบาทเจ้าของในที่เก็บ เมื่อคุณมีบทบาทของเจ้าของแล้วคุณสามารถมอบหมายให้เจ้านายโดยตรง มันน่ารำคาญ แต่เป็นเชิงป้องกันไม่ให้สร้างโครงการใหม่ที่ไม่ต้องการไม่มีการแฮ็คจนกว่าเจ้าของ repo จะกดไฟล์แรกหรือคุณมีบทบาทเป็นเจ้าของ หวังว่านี่จะช่วยได้
kris

1

ฉันใช้ Windows เมื่อเกิดปัญหานี้ขึ้น

ข้อผิดพลาดแปลกเพราะมันเกิดขึ้นก่อนที่ฉันจะสามารถป้อนชื่อผู้ใช้และรหัสผ่านของฉันได้ เกิดอะไรขึ้นถ้ามีแคชหรืออะไรแบบนี้ ฉันขุดมันออนไลน์และพบคำตอบนี้ในฟอรัมสนับสนุนของ gitlab :

ฉันเปิด "แผงควบคุม => บัญชีผู้ใช้ => จัดการข้อมูลประจำตัวของคุณ => ข้อมูลประจำตัวของ Windows" ฉันพบสองรายการสำหรับhttps: //@github.comและเป็นบัญชีผู้ใช้ที่ไม่ถูกต้อง ฉันลบมันและในครั้งต่อไป "git push" ฉันถูก reprompted และให้ข้อมูลประจำตัวที่ถูกต้องและใช้งานได้! หมายเหตุอื่น ๆ - สิ่งนี้อาจเกิดขึ้นกับรีโมตคอมไพล์ก็ได้

ในข้อมูลประจำตัวของ Windows ฉันพบรายการ GitLab สองรายการสำหรับบัญชีเก่า ฉันลบทั้งสองและตอนนี้มันใช้งานได้!

แผง:

ป้อนคำอธิบายรูปภาพที่นี่


@ YanickSenn ยินดีต้อนรับ ฉันเสียเวลาไปมากกับอันนี้ ดีใจที่ได้ช่วย
aloisdg ย้ายไป codidact.com

1

นี่ถือเป็นคุณสมบัติใน Gitlab

Maintainer / Ownerการเข้าถึงไม่สามารถบังคับให้กดอีกครั้งสำหรับสาขาเริ่มต้น & ป้องกันตามที่ระบุไว้ในเอกสารนี้ ป้อนคำอธิบายรูปภาพที่นี่


1
จริงๆแล้วมันไม่ได้โชคร้ายเลย มันเป็นสิ่งที่ดีอย่างแน่นอน มันเป็นชั้นป้องกันพิเศษ
Chiramisu

0

ฉันประสบปัญหาเดียวกันกับที่เก็บของฉัน ฉันเป็นต้นแบบของที่เก็บ แต่ฉันมีข้อผิดพลาด

ฉันไม่ได้ป้องกันโครงการของฉันแล้วป้องกันอีกครั้งและข้อผิดพลาดหายไป

เราได้อัปเกรดเวอร์ชัน gitlab ระหว่างการกดครั้งก่อนของฉันและรุ่นที่มีปัญหา ฉันคิดว่าการอัพเกรดนี้ได้สร้างข้อผิดพลาด


0

การแก้ปัญหาข้างต้นอธิบายอย่างชัดเจนว่าปัญหาคืออะไร; เมื่อคุณไม่สามารถควบคุม repo ได้วิธีที่ดีที่สุดในการส่งรหัสของคุณคือการสร้าง Fork ของ repo ดั้งเดิมและส่งรหัสของคุณไปยัง repo ใหม่นี้เพื่อให้คุณสามารถผลักดันมันไปยัง Repo เดิมได้ในภายหลัง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.