ข้อผิดพลาดของ Git เมื่อพยายามที่จะผลัก - ตะขอรับล่วงหน้าถูกปฏิเสธ


206

เมื่อฉันพยายามผลักดันการเปลี่ยนแปลงที่ฉันทำฉันได้รับข้อผิดพลาดต่อไปนี้ ...

git.exe push -v --progress  "origin" iteration1:iteration1

remote: *********************************************************************
To ssh://git@mycogit/cit_pplus.git
! [remote rejected] iteration1 -> iteration1 (pre-receive hook declined)
error: failed to push some refs to 'ssh://git@mycogit/cit_pplus.git'

เกิดอะไรขึ้น?


8
มีอะไรใน mycogit ของ hookon pre-pre?
rob mayoff

คุณจะไม่พยายามส่งไฟล์ขนาดใหญ่ไปที่ github หรือไม่?
Adam F

FYI: วันนี้เพื่อนร่วมงานทั้งหมดของฉันได้รับข้อความผิดพลาดนี้ในที่สุดเราก็ตัดสินใจรีสตาร์ทเซิร์ฟเวอร์ที่เก็บข้อมูลของเราและได้รับการแก้ไขอย่างน่าอัศจรรย์ เราไม่ทราบว่าปัญหาคืออะไร
T_D

คำตอบ:


125

git@mycogit/cit_pplus.gitคุณควรถามใครก็ตามที่ยังคงซื้อคืนที่

การกระทำของคุณถูกปฏิเสธโดยpre-receiveเบ็ดของ repo นั้น (นั่นเป็นสคริปต์ที่ผู้ใช้กำหนดค่าได้ซึ่งมีวัตถุประสงค์เพื่อวิเคราะห์การกระทำที่เข้ามาและตัดสินใจว่าพวกเขาดีพอที่จะยอมรับใน repo หรือไม่)

นอกจากนี้ยังเป็นความคิดที่ดีที่จะขอให้บุคคลนั้นอัปเดตตะขอดังนั้นมันจะพิมพ์สาเหตุของการปฏิเสธ

หากผู้ดูแลคือตัวคุณเองดูเหมือนว่าคุณมีปัญหากับการตั้งค่าของคุณบนฝั่งเซิร์ฟเวอร์ กรุณาแชร์ข้อมูลเพิ่มเติม


7
ในกรณีของฉัน BitBucket มีการตรวจสอบความถูกต้องของเนื้อหาข้อความการกระทำเผชิญหน้ากับตั๋ว JIRA ซึ่งออฟไลน์อยู่ในขณะนั้น
Vítor Neil Avelino

1
ดังนั้นเมื่อมันกลายเป็นออนไลน์คงที่หรือไม่
shareef

5
ในกรณีของฉันมันไม่ตรงกันในชื่อผู้ใช้ที่สร้างความผูกพันและชื่อผู้ใช้ใน BitBucket ฉันไม่ได้รับอนุญาตให้อัปเดตชื่อผู้ใช้ BitBucket ดังนั้นฉันจึงต้องรีเซ็ตคอมมิชชันของฉันและยืนยันพวกเขาอีกครั้งด้วยชื่อผู้ใช้ที่อัปเดตแล้ว คุณสามารถอัปเดตชื่อผู้ใช้ git ด้วยคำสั่งนี้git config user.name 'UpdatedUserName'
MM

3
ในกรณีของเรา bitbucket ไม่อนุญาตให้ทุกคนดันไปที่สาขานี้
Ramon

ในกรณีของฉันฉันต้องค้นหาการตั้งค่า repo บน bitbucket และปิดการใช้งานคอมมิทเตอร์ตรวจสอบภายใต้การตั้งค่า Hooks
Sizons

78

ฉันพนันได้เลยว่าคุณกำลังพยายามผลักดันไปข้างหน้าอย่างไม่เร่งรีบและตะขอก็ปิดกั้น หากเป็นเช่นนั้นให้เรียกใช้git pull --rebaseก่อนที่จะกดปุ่มเพื่อรีบูตการเปลี่ยนแปลงในเครื่องของคุณบนฐานข้อมูลใหม่


นี่มันเจ๋งมาก. ตอนนี้ฉันอีกครั้งสามารถผลักดันและดึง git branch --set-upstream-to=origin/myBranchแต่ก่อนที่ฉันจะต้องตั้งต้นน้ำเป็น +1 สำหรับคำตอบของคุณ
AlokeT

ในพื้นที่เก็บข้อมูลใหม่ฉันผลักสาขา (ไม่ใช่ต้นแบบ) จากนั้นรีบูทและได้รับข้อผิดพลาดระหว่างการกด ฉันไม่พบเบ็ดเว็บ ฉันประหารชีวิตgit pull --rebaseต้องรีบูทอีกครั้งและสามารถผลักดันกิ่งไม้ได้ ในที่สุดฉันก็พบว่าสาขาของฉันได้รับการคุ้มครอง
CoolMind

60

ขนาดไฟล์มีความสำคัญ มีขีด จำกัด ~ 120MB สำหรับไฟล์เดียว ในกรณีของฉัน. gignignore ที่ใช้ Visual Studio มีไฟล์อยู่ในรายการ แต่ไฟล์นั้นยังคงถูกคอมมิต เมื่อใช้ git cli เราสามารถรับข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาดได้

การปฏิเสธการรับของ hook ล่วงหน้าเป็นผลมาจากไฟล์ขนาดใหญ่ โดยทั่วไปการตรวจสอบการผลักดัน

หากต้องการแก้ไขฉันได้ลบการส่งมอบครั้งล่าสุดโดยใช้:

git reset --soft HEAD~1

จากนั้นฉันก็แยกไฟล์ออกจากการคอมมิท

หมายเหตุ: ใช้ HEAD ~ N เพื่อย้อนกลับไปยังหมายเลข N ของข้อตกลงก่อนหน้า (เช่น 3, 4) ใช้สวิตช์ - soft เสมอเพื่อรักษาการเปลี่ยนแปลงในโฟลเดอร์

หวังว่ามันจะช่วย


สิ่งนี้ช่วยได้เนื่องจากปัญหาของฉันคือไฟล์ SQL dump ที่ไม่ต้องการ (155mb ในขนาดไฟล์) กำลังถูกผลัก (โดยไม่ตั้งใจ)
Mehrdad Dastgir

1
การ จำกัด ขนาดไฟล์ขึ้นอยู่กับผู้ให้บริการโฮสติ้งของคุณ GitHub มีข้อ จำกัด ในขนาดนั้นสำหรับคนอื่น ๆ มันแตกต่างกันและโดยทั่วไปแล้ว Git ที่โฮสต์เองนั้นไม่มีข้อ จำกัด ดังกล่าว
1615903

1
คุณจะทำอย่างไรถ้าคุณมีข้อผูกมัดหลายอย่างหลังจากกดปฏิเสธ? นี่คือกรณีของฉันฉันมีไฟล์ขนาดใหญ่ที่ไม่พึงประสงค์ (627MB) ในหนึ่งก่อนหน้านี้ก่อนที่จะพยายามที่จะผลักดันให้ repo
leeCoder

ฉันได้อัปโหลดไฟล์ CSV โดยไม่ตั้งใจ ดังนั้นในกรณีของฉันข้อผิดพลาดเกิดจากการที่
tonhozi

หากคุณมีหลายคอมมิชชันให้เพิ่มดัชนีเพื่อรีเซ็ตหัวกลับไปเป็นคอมมิท ตัวอย่างเช่นใช้ HEAD ~ 3 เพื่อย้อนกลับไปที่สามคอมมิชชันก่อนหน้า ใช้สวิตช์ --soft เสมอเพื่อรักษาการเปลี่ยนแปลงในโฟลเดอร์
ozkary

13

masterซึ่งอาจเป็นเพราะคุณไม่ได้มีสิทธิเข้าถึงที่จะผลักดันกระทำสาขาเช่น คุณสามารถขอให้ผู้ดูแลรักษาให้สิทธิ์ในการส่งมอบให้คุณ


ฉันคิดว่านี่ถูกต้อง แต่สิ่งที่น่าสนใจคือ VS ดูเหมือนว่าพยายามที่จะผลักดันไปยังสาขาหลักไม่ใช่ชื่อสาขาจริงไปยังรีโมท ดังนั้นหากสาขาหลักได้รับการป้องกันสิ่งนี้น่าจะเกิดขึ้น แต่ดูเหมือนว่าจะไม่มีการแก้ไขใน VS และคุณต้องเปลี่ยนเป็นบรรทัด cmd
Mark

9

ในกรณีของฉันฉันได้รับข้อความนี้เนื่องจากสาขาถูกทำเครื่องหมายเป็น 'ป้องกัน' ใน GitLab


1
ดูstackoverflow.com/a/28832644/2914140หรือโครงการ GitLab> การตั้งค่า> พื้นที่เก็บข้อมูลจากนั้นProtected Branchesค้นหา
CoolMind

8

ฉันได้รับข้อความนี้เมื่อเซิร์ฟเวอร์ GitLab กำลังทำการเปลี่ยนแปลงบางอย่าง ในวันถัดไปการผลักดันทำงานได้ดี อย่างไรก็ตามอย่างที่คนอื่น ๆ ชี้ให้ตรวจสอบกับผู้ดูแลของคุณเพื่อให้แน่ใจ


1
เพิ่งมีปัญหานี้และฉันคิดว่า GitLab กำลังทำการเปลี่ยนแปลง ให้เวลา 10 นาทีและใช้งานได้ ฉันไม่ได้เปลี่ยนแปลงอะไรเลย
woter324

เพิ่งมีปัญหานี้เช่นกัน สำหรับทุกคนที่อาจต้องการตรวจสอบว่าเป็นกรณีนี้หรือไม่: status.gitlab.com
Renan Ferrari

5

ฉันมีปัญหานี้เมื่อพยายามรวมการเปลี่ยนแปลงกับขนาดไฟล์ที่ใหญ่กว่าที่เก็บข้อมูลระยะไกลที่อนุญาต (ในกรณีของฉันคือ GitHub)


2
ในกรณีของฉันแม้หลังจากลบไฟล์ GitHub ยังคงบ่น ... แต่คำตอบนี้ทำเคล็ดลับstackoverflow.com/questions/19573031/…
CodenameDuchess

5

ฉันพบปัญหาเดียวกันนี้
สิ่งที่แก้ไขได้สำหรับฉันคือเปลี่ยนสาขาอื่นจากนั้นกลับไปที่สาขาเดิม

ไม่แน่ใจว่าสาเหตุที่ขีดเส้นใต้คืออะไร แต่สิ่งนี้ได้แก้ไขแล้ว


ฉันไม่สามารถผลักดันไปยังสาขาใหม่ไม่ได้เลย
zabop

3

Bitbucket : ตรวจสอบการอนุญาตของสาขาในการตั้งค่า (อาจเป็น 'ปฏิเสธทั้งหมด') หากวิธีนี้ไม่ได้ผลให้โคลนสาขาของคุณไปยังสาขาท้องถิ่นใหม่ผลักดันการเปลี่ยนแปลงไปยังรีโมต (จะสร้างสาขารีโมตใหม่) และสร้าง PR


2

ในกรณีที่ช่วยใครบางคน:

ฉันมี repo เปล่าที่ไม่มีสาขาหลักที่จะทำการป้องกัน (ใน Gitlab) ดังนั้นก่อนที่จะทำงาน git push -u origin --all

  • ฉันต้องวิ่งgit push -u origin masterก่อน
  • เลิกป้องกันสาขาหลักชั่วคราว
  • ผลักดันส่วนที่เหลือ ( --all& --tags)

2

ฉันพบข้อผิดพลาดเดียวกันเมื่อตรวจสอบว่าฉันมีสิทธิ์การเข้าถึงของนักพัฒนาซอฟต์แวร์และไม่สามารถเผยแพร่สาขาใหม่ได้ การเพิ่มสิทธิ์การเข้าถึงระดับสูงช่วยแก้ปัญหานี้ได้ (Gitlab)


2

ฉันได้รับข้อผิดพลาดนี้ด้วยส่วนสำคัญของ GitHub ฉันพยายามผลักดันคอมมิชชันกับไฟล์ในไดเรกทอรีย่อย สรุปสาระสำคัญสามารถมีไฟล์ในไดเรกทอรีรากเท่านั้น


รับสิ่งนี้ด้วย ปรากฎว่า repo มีไฟล์"snippets\\csharp.json"ที่ให้คอมไพล์บน windows ในเวลาที่ยากลำบาก
Carl Walsh

2

ลบตัวเลือกสาขาที่ได้รับการป้องกันหรืออนุญาตบทบาทเพิ่มเติมเช่นนักพัฒนาซอฟต์แวร์หรือผู้ดูแลระบบเพื่อให้ผู้ใช้เหล่านี้ประสบกับข้อผิดพลาดนี้ในการผสานและผลักดัน


1

"<JIRA ID><Message>"ในกรณีของเรามีตะขอสำหรับกระทำข้อความสคริปต์เซิร์ฟเวอร์ของเรายอมรับการกระทำถ้าพวกเขามีรูปแบบพิเศษสำหรับการกระทำข้อความ มัน (เบ็ด) ปฏิเสธการส่งมอบหากไม่มีตั๋วจิราที่เกี่ยวข้องหรือมีสัญลักษณ์พิเศษบางอย่างในข้อความยืนยัน ฉันพบข้อผิดพลาดนี้เมื่อฉันเพิ่ม /, [,> ฯลฯ ในข้อความยืนยันการลบการทำงานเหล่านั้นได้ดี


คำตอบนี้ไม่น่าจะช่วยได้เนื่องจากผู้โพสต์ดั้งเดิม (และคนอื่น ๆ ที่กำลังเยี่ยมชมในอนาคต) จะมีสคริปต์อื่นที่ได้รับการกำหนดค่าเป็นเบ็ดรับล่วงหน้า
aronisstav

1

สิ่งนี้เกิดขึ้นจริงเมื่อเปิดใช้งาน YACC ที่ฝั่งเซิร์ฟเวอร์ใน BitBucket YACC เปิดใช้งานสำหรับชื่อปัญหาของ JIRA ที่จะกล่าวถึงในข้อความยืนยัน ดังนั้นเมื่อใดก็ตามที่คุณส่งข้อความอย่างน้อยเก็บหมายเลข JIRA ของคุณลงในข้อความกระทำแล้วนอกจากนี้คุณสามารถเพิ่มข้อความของคุณเอง


1

ฉันใช้ GitKraken และเราสร้างสาขาท้องถิ่นจากนั้นเรารวมสาขาระยะไกลสองแห่งเข้าด้วยกันจากนั้นเราพยายามผลักสาขาท้องถิ่นให้เป็นต้นกำเนิด มันไม่ทำงานกับข้อความแสดงข้อผิดพลาดเดียวกัน

การแก้ปัญหาคือการสร้างสาขาท้องถิ่นและผลักมันก่อนที่จะกำเนิดแล้วทำการผสาน


1

ปัญหา: "PUSH ล้มเหลวในการอ้างอิง / หัว / - การขอล่วงหน้าถูกปฏิเสธ"

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

PUSH ล้มเหลว refs / head / - hook ก่อนรับถูกปฏิเสธ

ดังนั้นการลองตรวจสอบก็คือเหมือนกันกับ repo โครงการอื่นและพวกเขาไม่พบปัญหาใด ๆ

การแก้ไข:

เพื่อนร่วมงานของฉันสังเกตเห็นว่าเมื่อเราโคลนโครงการกลับมาในพื้นที่ขนาดของโครงการคือ 110MB ดังนั้นเราจึงเริ่มทำความสะอาดกิ่งไม้ที่เรารวมกันก่อนหน้านี้และกิ่งไม้ที่ใช้งานอยู่ซึ่งไม่ต้องการอีกต่อไป เมื่อทำความสะอาดเสร็จแล้วสำหรับสองสาขาเราตระหนักว่าขนาดของ repo ลดลงอย่างมากจาก 2GB ถึง 120MB จากนั้นเราพยายามผลักดันการเปลี่ยนแปลงไปยังสาขาของฉันและมันก็ใช้ได้


1

ในกรณีของฉันฉันมีพื้นที่เก็บข้อมูลใหม่ผลักสาขา ('UCA-46' ไม่ใช่ 'ต้นแบบ') rebased มันผลักดันอีกครั้งและได้รับข้อผิดพลาด ไม่มีเว็บ hooks อยู่ ฉันดำเนินการgit pull --rebaseตามที่@ThiefMaster ได้รับคำแนะนำต้องรีบูตอีกครั้งและสามารถผลักดันสาขาได้ แต่นั่นเป็นวิธีที่แปลกและยาก

จากนั้นผมเห็นข้อผิดพลาดของการผลักดัน Git ก่อนได้รับลดลงเบ็ด ฉันพบว่าสาขาของฉันกลายเป็นที่ได้รับการคุ้มครอง ฉันลบการป้องกันและสามารถบังคับให้กดอีกครั้ง

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


0

ฉันได้สิ่งนี้เมื่อพยายามผลักดันอินสแตนซ์ dokku เปิดใช้งานดิสก์เต็มบนเซิร์ฟเวอร์ของฉัน

Ran: du -f

และผลก็คือ:

Filesystem      Size  Used Avail Use% Mounted on
udev            476M     0  476M   0% /dev
tmpfs           100M  4.4M   95M   5% /run
/dev/xvda1      7.8G  7.4G  8.9M 100% /

0

สำหรับฉันการอนุญาตบนเซิร์ฟเวอร์ git ระยะไกลแก้ปัญหา ป้อนคำอธิบายรูปภาพที่นี่


0

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

วิธีแก้ปัญหาที่สกปรกของฉัน แต่วิธีแก้ปัญหาที่ใช้การได้คือเปลี่ยนชื่อไดเรกทอรีปัจจุบันอีกครั้งคัดลอกไดเรกทอรีเป็นโลคัลและสะท้อนการเปลี่ยนแปลงด้วยตนเองไปยังไดเรกทอรีโลคัล recloned ...

มันฟังดูไม่ดี แต่ใช้งานได้ ...


1
ฉันประสบปัญหาเดียวกันและใช้การรีเซ็ต $ git - soft HEAD ~ 1 เป็นสิ่งที่ @ozkary แนะนำให้ความช่วยเหลือ
jarrettyeo

0

ข้อผิดพลาดสำหรับฉันคือโครงการไม่ได้สร้างสาขาและบทบาทของฉันคือนักพัฒนาดังนั้นฉันไม่สามารถสร้างสาขาใด ๆ ขอให้พวกเขาให้สิทธิ์ที่เกี่ยวข้องและทุกอย่างตามลำดับตอนนี้!


0

ยังไม่มีสาขาเริ่มต้น (เช่นmaster) สำหรับรีโมทของคุณ ดังนั้นก่อนอื่นคุณต้องสร้างmasterสาขาในเซิร์ฟเวอร์ระยะไกล git (เช่นการสร้างREADME.mdไฟล์เริ่มต้น) จากนั้นลองpushสาขาท้องถิ่นที่มีอยู่ทั้งหมดของคุณโดยใช้คำสั่งนี้:

git push -u origin --all

0

สำหรับฉันทุกอย่างทำงานได้ดีจนกระทั่ง Bitbucket เปลี่ยนนโยบายโดยอัตโนมัติในวันนี้ (21 เมษายน 2020) สิ่งนี้เกิดขึ้นเพื่อให้สอดคล้องกับคุณสมบัติใหม่ที่เพิ่งเปิดตัวในวันนี้ชื่อว่าWorkspacesดังนั้นฉันจึงสงสัยว่ามันมีบางอย่างที่เกี่ยวข้องกับสิ่งนั้น

วิธีแก้ปัญหา : ฉัน (ในฐานะผู้ดูแลระบบ) ปฏิบัติตามคำแนะนำเพื่อเพิ่มที่อยู่อีเมลไปยังผู้ใช้ใน UI (สามารถพบอีเมลที่คุณใช้งานอยู่ได้)git config --list

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


-7

การระบุเวอร์ชัน node.js สามารถแก้ปัญหาเช่น

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "10.3.0"
  }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.