เช่นเดียวกับข้อผิดพลาดในการรวมหรือข้อผิดพลาด rebase มีรหัสข้อผิดพลาดที่ไม่ซ้ำกันหรือไม่?
เช่นเดียวกับข้อผิดพลาดในการรวมหรือข้อผิดพลาด rebase มีรหัสข้อผิดพลาดที่ไม่ซ้ำกันหรือไม่?
คำตอบ:
ฉันตั้งค่าการทดสอบล้มเหลว นี่คือสิ่งที่ฉันได้รับ:
$ git merge newbranch
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.
$ echo $?
1
Git จะส่งคืน0เมื่อรวมเข้าด้วยกันอย่างถูกต้องตามที่คาดไว้
&&; นั่นคือวิธีดำเนินการทดสอบ
git rebaseพฤติกรรมเดียวกันได้หรือไม่
ในระยะสั้นไม่ คุณจะเห็นรหัสทางออก 1 สำหรับข้อผิดพลาดและ 0 สำหรับความสำเร็จ
จากการจับแหล่งที่มาอย่างรวดเร็วมี 127 และ 128 ที่คาดไว้สำหรับวัตถุประสงค์เฉพาะ (ไม่พบคำสั่งรายงานข้อผิดพลาดแล้ว) และรหัสผิดปกติบางส่วนในไม่กี่แห่ง แต่สำหรับข้อผิดพลาดในการทำงานของโรงสี ทั้งหมดexit(1).
manรายละเอียดในหน้าของพวกเขา
การรันgit statusบน repo ที่ไม่ใช่ git จะคืนค่า 128 ไม่ใช่ 1 ซึ่งมีประโยชน์ในการพิจารณาอย่างรวดเร็วว่า git repo มีอยู่หรือไม่
git push --delete origin a_remote_tag_name
สิ่งนี้จะส่งคืน 256 หากไม่มีแท็กโดยใช้เวอร์ชัน git 1.8.3.1
จะเป็นการดีที่จะมีการรวมรายการโค้ดส่งคืนเฉพาะที่ส่งคืนโดยแต่ละคำสั่งและสิ่งที่ระบุ นอกจากนี้ยังอาจช่วยป้องกันการเปลี่ยนความหมายโค้ดส่งคืน (ซึ่งสคริปต์อัตโนมัติอาจต้องใช้)
ข้อผิดพลาด 128 ที่ไม่มีข้อความแสดงข้อผิดพลาดจากคอมไพล์อาจเป็นข้อผิดพลาดทั้งหมดสำหรับ "ปัญหาที่ไม่คาดคิด"
ฉันได้รับสิ่งนี้ในการดำเนินการที่จำเป็นในการแก้ไขไฟล์ภายใต้. git (เช่น " git checkout -- myfile" เพื่อเปลี่ยนไฟล์ที่แก้ไข) โดยผู้ใช้รายอื่น (ในกรณีของฉัน " chmod -R og+w .git" แก้ไขแล้วโดยธรรมชาติอย่าทำเช่นนั้นเว้นแต่คุณจะเข้าใจผลกระทบด้านความปลอดภัยสำหรับกรณีของคุณ!)
Git 2.24 (Q4 2019) แสดงให้เห็นว่าgitคำสั่งส่งคืนโค้ดอย่างไร
ดูกระทำ 50094ca , กระทำ c1a6f21 , กระทำ 854b5cb , กระทำ dd2b6b6 , กระทำ 6bd26f5 , กระทำ c6ec6da , กระทำ f2e2fa8 , กระทำ 460609c , กระทำ 92014b6 , กระทำ 0ab74e9 , กระทำ cb46c40 , กระทำ b562a54 (27 สิงหาคม 2019) และกระทำ fe49814 (20 สิงหาคม 2019) โดยDenton หลิว (Denton-L )
(ผสานโดยJunio C Hamano - gitster-ในการกระทำ 1c6fc94 , 30 ก.ย. 2019)
t4014: หยุดการสูญเสียรหัสส่งคืนของคำสั่ง git
ปัจจุบันมีสองวิธีที่รหัสส่งคืนของคำสั่ง Git หายไป
วิธีแรกคือเมื่อคำสั่งอยู่ในต้นน้ำของไปป์ ในไพพ์จะใช้โค้ดส่งคืนของคำสั่งสุดท้ายเท่านั้น ดังนั้นคำสั่งอื่น ๆ ทั้งหมดจะมีการปิดบังรหัสส่งคืน
เขียนไปป์ใหม่เพื่อให้ไม่มีคำสั่ง Git ที่อัปสตรีมวิธีอื่น ๆ คือเมื่อคำสั่งอยู่ในsubshell ที่ไม่ได้รับมอบหมาย
รหัสส่งคืนจะสูญหายไปตามคำสั่งโดยรอบ
เขียนอินสแตนซ์ของสิ่งนี้ใหม่เพื่อให้คำสั่ง Git ส่งออกไปยังไฟล์และคำสั่งรอบ ๆ เรียกเฉพาะ subshells ด้วยคำสั่งที่ไม่ใช่ Git
ดังนั้นแทนที่จะเขียน:
git cat-file commit rebuild-1 | grep "^Side .* with .* backslash-n"
ประเภท:
git cat-file commit rebuild-1 >actual &&
grep "^Side .* with .* backslash-n" actual
git merge(ที่ 1.7.4 - kernel.org/pub/software/scm/git/docs/v1.7.4/git-merge.html ) จะกล่าวถึงสถานะการส่งคืนในที่เดียวเท่านั้น (หากคุณใช้ "- -ff-only "และไม่สามารถทำการ fast-forward ได้ แต่จะส่งกลับไม่เป็นศูนย์ - ไม่ได้บอกอย่างชัดเจนว่าจะส่งคืนอะไรหากทุกอย่างทำงานหรือมีข้อขัดแย้งในการรวม