โปรดทราบว่าคุณไม่จำเป็นต้องใช้เนื่องจาก Git 2.5 (Q2 2015) a ' --' ถ้าอาร์กิวเมนต์ของคุณมีอักขระตัวแทน ( *)
การแก้ปัญหาเพื่อช่วยให้การgit <cmd> <revs> <pathspec>ประชุมบรรทัดคำสั่ง "" เพื่อตรวจจับเส้นทางที่พิมพ์ผิดนั้นคือตรวจสอบให้แน่ใจว่าพารามิเตอร์ที่ไม่ใช่ rev ทั้งหมดในส่วนต่อมาของบรรทัดคำสั่งเป็นชื่อของไฟล์ในแผนผังการทำงาน แต่นั่นหมายความว่า " git grep $str -- \*.c" disambiguated กับ " --" เพราะไม่มีใครมีสติจะสร้างไฟล์ที่มีชื่ออย่างแท้จริงคือดอกจัน - ดอท - ซี
Git 2.5 สูญเสียการรู้สำนึกที่จะประกาศว่าด้วยสายอักขระตัวแทนผู้ใช้น่าจะหมายถึงการให้เส้นทางของเรา
git checkout 'a*'
# same as
git checkout -- 'a*'
ดูกระทำ 28fcc0b (2 พฤษภาคม 2015) โดยDuy เหงียน (nguyenlocduy )
(รวมโดยJunio C Hamano - gitster-ในการกระทำ 949d167ที่ 19 พฤษภาคม 2015)
pathspec: หลีกเลี่ยงความต้องการ " --" เมื่อใช้ไวด์การ์ด
เมื่อ--ขาด" " จากบรรทัดคำสั่งและคำสั่งสามารถใช้ทั้ง revs และพา ธ ได้แนวคิดก็คือถ้าอาร์กิวเมนต์สามารถถูกมองว่าเป็นทั้ง SHA-1 ที่ขยายออกและพา ธ ดังนั้น--จำเป็นต้องใช้" " หรือปฏิเสธที่จะดำเนินการต่อ
ปัจจุบันมีการใช้งานเป็น:
- (1) ถ้ามีการโต้แย้งอาร์กิวเมนต์จะต้องไม่มีอยู่ใน worktree
- (2) มิฉะนั้นจะต้องมีอยู่ใน worktree
- (3)
--จำเป็นต้องมี ""
กฎเหล่านี้ใช้ได้กับเส้นทางตัวอักษร แต่เมื่อเส้นทางที่ไม่ใช่ตัวอักษรมีส่วนเกี่ยวข้องนั้นผู้ใช้มักจะต้องเพิ่ม " --" เพราะมันล้มเหลว (2) และ (1) แทบไม่ได้พบกันจริง ๆ ( *.cเช่น "1") (1) พบถ้ามีการอ้างอิงชื่อ " *.c")
โปรแกรมปรับปรุงนี้แก้ไขกฎเล็กน้อยโดยพิจารณา*สัญลักษณ์ตัวแทน( ) wildsp pathspec ใด ๆ"มีอยู่ใน worktree"
กฎกลายเป็น:
- (1) ถ้า arg เป็น rev แล้วจะต้องมีอยู่ใน worktree หรือไม่ใช่ pathspec ของ wildcard ที่ถูกต้อง
- (2) มีอยู่ใน worktree หรือเป็น wildsp pathspec
- (3)
--จำเป็นต้องมี ""
ด้วยกฎใหม่ " --" ไม่จำเป็นต้องใช้เวลาส่วนใหญ่เมื่อมีการใช้สัญลักษณ์แทนพา ธ
ด้วย Git 2.26 (ไตรมาสที่ 1 ปี 2020) ตรรกะการแก้ความกำกวมในการบอกการแก้ไขและการแยกออกจากกันนั้นได้รับการปรับแต่งเพื่อให้อักขระพิเศษแบ็กสแลชที่หนีจากแบ็กสแลชไม่นับในกฎ
ดูกระทำ 39e21c6 (25 มกราคม 2020) โดยเจฟฟ์คิง (peff )
(รวมโดยJunio C Hamano - gitster-ในการกระทำ 341f8a6 , 12 กุมภาพันธ์ 2020)
verify_filename(): จัดการแบ็กสแลชในกฎ "wildcards is pathspecs"
รายงานโดย: David Burström
ลงนามโดย: Jeff King
กระทำ28fcc0b71a ( pathspec: หลีกเลี่ยงความต้องการ " --" เมื่อใช้ไวลด์การ์ด, 2015-05-02) ได้รับอนุญาต:
git rev-parse '*.c'
ไม่มีเส้นประ
แต่กฎที่ใช้ในการตรวจสอบสัญลักษณ์แทนกำลังมองหา glob พิเศษใด ๆ
นี่เป็นรูปแบบที่เสรีมากเกินไปซึ่งหมายความว่ารูปแบบที่ไม่ได้ใช้การจับคู่สัญลักษณ์แทนเช่น " a\b" จะถือว่าเป็นเส้นทาง
หากคุณมีไฟล์ดังกล่าวอยู่ในดิสก์นั่นอาจเป็นสิ่งที่คุณต้องการ
แต่ถ้าคุณทำไม่ได้ผลลัพธ์จะสับสน: แทนที่จะพูดว่า " there's no such path a\b" เราจะยอมรับอย่างเงียบ ๆ ว่าเป็นเส้นทางที่ไม่ตรงกับสิ่งใดมาก (หรืออย่างน้อยก็ไม่ใช่สิ่งที่คุณตั้งใจ)
การค้นหาเส้นทาง " a\*b" จะไม่ขยายการค้นหาเลย มันจะค้นหารายการเดียวเท่านั้น " a*b"
การกระทำนี้เป็นการสลับกฎเพื่อทริกเกอร์เฉพาะเมื่อ glob metacharacters จะขยายการค้นหาซึ่งหมายความว่าทั้งสองกรณีนี้จะรายงานข้อผิดพลาด (คุณยังสามารถแก้ปัญหาด้วยการใช้ " --" แน่นอนเราแค่กระชับ heuristic DWIM)
( DWIM: ทำในสิ่งที่ฉันหมายถึง )
โปรดทราบว่าเราไม่ได้ทดสอบคุณสมบัติดั้งเดิมใน28fcc0b71aเลย
ดังนั้นโปรแกรมแก้ไขนี้ไม่เพียง แต่ทดสอบสำหรับมุมของกรณีเหล่านี้ แต่ยังเพิ่มการทดสอบการถดถอยสำหรับลักษณะการทำงานที่มีอยู่