โปรดทราบว่าคุณไม่จำเป็นต้องใช้เนื่องจาก 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เลย
ดังนั้นโปรแกรมแก้ไขนี้ไม่เพียง แต่ทดสอบสำหรับมุมของกรณีเหล่านี้ แต่ยังเพิ่มการทดสอบการถดถอยสำหรับลักษณะการทำงานที่มีอยู่