git push ล้มเหลวด้วย remote: error: hook ถูกปฏิเสธเพื่ออัพเดต refs / heads / master


9

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

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

git config --global user.name "MYNAME"
git config --global user.email "MYEMAIL"
mkdir testproject
cd testproject
git init
touch README
git add README
git commit -m 'first commit'
git remote add origin git@git.xxxxx.org:community/testproject.git

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

git push -u origin master

และข้อผิดพลาดคือ

Counting objects: 3, done.
Writing objects: 100% (3/3), 204 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
Username for 'http://git.xxxxxx.org': MYEMAIL
Password for 'http://MYEMAIL.com@git.xxxxxx.org': 
remote: /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/spec_set.rb:92:in `block in materialize': Could not find rake-10.1.0 in any of the sources (Bundler::GemNotFound)
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:in `map!'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:in `materialize'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/definition.rb:114:in `specs'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/definition.rb:159:in `specs_for'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/definition.rb:148:in `requested_specs'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/environment.rb:18:in `requested_specs'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:13:in `setup'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler.rb:120:in `setup'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/setup.rb:17:in `<top (required)>'
remote:         from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
remote:         from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
remote: error: hook declined to update refs/heads/master
To http://git.xxxxxx.org/community/testproject.git
 ! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'http://git.xxxxxx.org/community/testprojact.git'

ฉันไม่แน่ใจจริงๆว่าจะทำอย่างไรจากที่นี่ แต่ความช่วยเหลือใด ๆ ที่ชื่นชมมาก

นอกจากนี้ฉันใช้ Arch ถ้ามันสำคัญ

แก้ไข: ฉันได้ลองติดตั้ง rake ใหม่แล้ว แต่มันไม่ทำงาน คราดรุ่นปัจจุบันของฉันคือ 10.1.1 ดังนั้นฉันจึงลองลบออกแล้วแทนที่ด้วยรุ่น 10.1.0 และนั่นก็ไม่ได้แก้ไข

อย่างไรก็ตามเมื่อฉันติดตั้งคราดฉันได้รับข้อผิดพลาด:

WARNING:  You don't have /home/josh/.gem/ruby/2.0.0/bin in your PATH,
          gem executables will not run.

นี่อาจเป็นสาเหตุของปัญหาหรือไม่

คำตอบ:


9

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

ฉันจะแนะนำให้คุณติดต่อใครก็ตามที่จัดการพื้นที่เก็บข้อมูลคอมไพล์ชุมชนของคุณ


นั่นคือสิ่งที่ฉันคิด ไม่มีตะขอใน repo คอมไพล์ของฉันใช้งานได้และไม่มีอะไรที่ฉันได้ทำไปแม้ดูเหมือนจะเปลี่ยนข้อผิดพลาดหรือสร้างใหม่ ฉันจะติดต่อเจ้าของ repo และดูว่าเขามีข้อมูลใด ๆ เกี่ยวกับปัญหาหรือไม่
Joshua Strot

เปิดใช้งานปัญหาคือฉันพยายามที่จะผลักดันวิธี HTTP ซึ่งไม่ได้รับการสนับสนุนบน GitLab ของพวกเขา คุณต้องผลักดัน SSH แทนซึ่งใช้งานได้ดีอย่างน่าอัศจรรย์ ฉันต้องบอกว่าฉันไม่ได้คาดหวังว่า
Joshua Strot

0

ฉันเชื่อว่านี่เป็นปัญหาของคุณ

remote: error: hook declined to update refs/heads/master
To http://git.xxxxxx.org/community/testproject.git
 ! [remote rejected] master -> master (hook declined)

ค้นหาข้อผิดพลาดนี้ฉันมาข้าม Q & A นี้ในดังนั้นหัวข้อ: ข้อผิดพลาด: เบ็ดปฏิเสธที่จะปรับปรุง refs / หัว / external_pub ขณะที่ผลักดันสาขา

ดูเหมือนว่ามีgit hookอยู่บนเซิร์ฟเวอร์ที่ปฏิเสธการพุช

สิ่งที่สกัดมา

เซิร์ฟเวอร์ด้านตะขอ

นอกเหนือจาก hooks ฝั่งไคลเอ็นต์คุณสามารถใช้ hooks ด้านเซิร์ฟเวอร์ที่สำคัญสองสามตัวในฐานะผู้ดูแลระบบเพื่อบังคับใช้นโยบายเกือบทุกประเภทสำหรับโครงการของคุณ สคริปต์เหล่านี้ทำงานก่อนและหลังพุชไปยังเซิร์ฟเวอร์ ตะขอล่วงหน้าสามารถออกจากที่ไม่เป็นศูนย์ได้ตลอดเวลาเพื่อปฏิเสธการพุชรวมถึงพิมพ์ข้อความแสดงข้อผิดพลาดกลับไปยังไคลเอ็นต์ คุณสามารถตั้งค่านโยบายการส่งที่ซับซ้อนตามที่คุณต้องการ

หากต้องการทราบสาเหตุที่คุณได้รับข้อความแสดงข้อผิดพลาดนี้คุณจะต้องทราบว่าเบ็ดใดที่ทำให้สะดุด เบ็ดถูกเก็บไว้ในhooksโฟลเดอร์ภายในโฟลเดอร์ git (ที่ปลายเซิร์ฟเวอร์ระยะไกล) - ค้นหาpre-receivehook หรือupdatehook และตรวจสอบเพื่อดูว่าอะไรทำให้เกิดปัญหาของคุณ


ภายในโฟลเดอร์ hooks ของฉันฉันมีหลายไฟล์พร้อมนามสกุล. ตัวอย่าง ฉันไม่มีเบ็ดรับล่วงหน้า แต่มีตะขออัพเดท เนื่องจากพวกเขาทั้งหมดมีส่วนขยายตัวอย่าง. แต่ฉันไม่เชื่อว่ามีการใช้งานอยู่ดังนั้นอาจเป็นไปได้ไหมว่ามันเป็นตะขอบนเซิร์ฟเวอร์ที่ปฏิเสธฉัน ฉันดูออนไลน์และมีคนสองคนที่มีปัญหาของฉันที่ได้รับการแก้ไขโดยการทำสิ่งต่าง ๆ ซึ่งไม่มีในกรณีของฉัน
Joshua Strot

0

ตรวจสอบบทบาท / กลุ่มและการอนุญาตในพื้นที่เก็บข้อมูล GIT กรณีของฉันเฉพาะสิทธิ์สีแดงและได้รับการแก้ไขหลังจากการเข้าถึงแบบอ่าน / เขียนโดยทีมพื้นที่เก็บข้อมูล GIT


0

มี @Radhakrishnan ได้แนะนำแล้วคุณอาจประสบปัญหาสิทธิ์

ในกรณีที่คุณใช้Redmine Git Hostingตรวจสอบว่ามีการกำหนดบทบาทผู้จัดการสิทธิ์ให้กับผู้ใช้ที่พยายามเขียนการอ้างอิงการติดตามของ git ของเขา / เธอ

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

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