วิธีคอมไพล์ยอมรับไฟล์ / ไดเรกทอรีเดียว


216

ลองคำสั่งต่อไปนี้:

git commit path/to/my/file.ext -m 'my notes'

รับข้อผิดพลาดใน git เวอร์ชั่น 1.5.2.1:

error: pathspec '-m' did not match any file(s) known to git.
error: pathspec 'MY MESSAGE' did not match any file(s) known to git.

เป็นไวยากรณ์ที่ไม่ถูกต้องสำหรับไฟล์ singe หรือไดเรกทอรีที่กระทำ?

คำตอบ:คาดว่าจะมีการ โต้แย้งตามลำดับนี้ ...

git commit -m 'my notes' path/to/my/file.ext

อัพเดท:มันไม่เข้มงวดอีกต่อไป :)


1
คุณแน่ใจหรือว่าเวอร์ชั่นของคุณถูกต้อง? อัปเดตเป็น 1.5.2.1 หรือไม่ 1.5.2.1 มีอายุมากกว่า 4 ปีแล้ว
CB Bailey

มีอะไรที่ห้ามไม่ให้คุณอัพเกรด git หรือไม่?
Adam Dymitruk

BTW: นี่คือ VM หมุนตัวมาจากสูตรเก่า Local Git เป็นรุ่นล่าสุดไม่ทราบว่ารุ่นนี้เป็นรุ่นโบราณ ความเข้มงวดเปลี่ยนไป
doublejosh

คำตอบ:


352

ข้อโต้แย้งของคุณอยู่ในลำดับที่ไม่ถูกต้อง ลองหรือถ้าคุณต้องการที่จะมีความชัดเจนมากขึ้นgit commit -m 'my notes' path/to/my/file.extgit commit -m 'my notes' -- path/to/my/file.ext

อนึ่ง git v1.5.2.1 มีอายุ 4.5 ปี คุณอาจต้องการอัปเดตเป็นรุ่นที่ใหม่กว่า (1.7.8.3 เป็นรุ่นปัจจุบัน)


2
คุณสังเกตได้ดี อย่างไรก็ตาม Git 1.7.5.1 ที่น่าสนใจบน Windows ยอมรับอย่างสุภาพgit commit path_to_file -m 'message'
Sri Sankaran

@SriSankaran: ฟังดูเหมือนพวกเขาสอนให้รู้จักการโต้เถียงที่ไม่เป็นไปตามลำดับ แต่ตามเอกสารประกอบคำสั่งที่ถูกต้องคือการใส่รายชื่อไฟล์ไว้เป็นอันดับสุดท้ายและอาจเป็นความคิดที่ดีที่จะยึดติดกับสิ่งต่าง ๆ ที่เป็นเอกสาร
Lily Ballard

ขอบคุณ ลำดับของข้อความเหล่านี้เปลี่ยนไป ... หรืออย่างน้อยก็ความเข้มงวดของคำสั่งเปลี่ยนไป)
doublejosh

1
@DavidDimalanta: คุณหมายถึงอะไร
Lily Ballard

1
@ihebiheb มองตอนนี้ฉันไม่เห็นพารามิเตอร์ที่ไม่ใช่แฟล็กอื่นgit commitดังนั้นฉันเดาว่าคำตอบคือ "ไม่มีอะไร" แต่ในคำสั่ง git อื่น ๆ อีกมากมายคำสั่ง--เส้นทางที่แตกต่างจากอาร์กิวเมนต์อิสระรูปแบบอื่น ๆ (ตัวอย่างเช่นกับgit logการ--ป้องกันเส้นทางจาก ถูกตีความว่าเป็นช่วงการแก้ไขแทน)
Lily Ballard


16

หากคุณอยู่ในโฟลเดอร์ที่มีไฟล์

git commit -m 'my notes' ./name_of_file.ext

1
ถ้าฉันอยู่ในไฟล์แล้วฉันต้องมีผู้นำ "./" (dot forward-slash) หรือไม่? ฉันสามารถใช้git commit -m "my note" name_of_file.txt?
Chris22

@ Chris22 ฉันไม่แน่ใจว่าสิ่งที่คุณหมายถึงโดย "ถ้าฉันอยู่ในไฟล์" (บางทีคุณอาจหมายถึง "ในไดเรกทอรี"?) ... ./เป็นเพียงไวยากรณ์เส้นทางปกติ แต่ใช่ไม่จำเป็นในตัวอย่างนี้
Jonathan Cross

7

ใช้-oตัวเลือก

git commit -o path/to/myfile -m "the message"

-o, - กระทำเฉพาะไฟล์ที่ระบุเท่านั้น


ตัวเลือกนั้นไม่จำเป็น หากคุณรวมหน้าไฟล์ไว้ในคำสั่งการส่งคำสั่งจะส่งไฟล์เหล่านั้นเท่านั้น
doublejosh

เป็นการดีที่จะรู้ว่าคุณต้องการให้แน่ใจเมื่อล้อเล่นกับ params เพิ่มเติมเช่น--amend
Tomas Varga


4

สำหรับ git 1.9.5 บน Windows 7: "หมายเหตุของฉัน" (เครื่องหมายคำพูดคู่) แก้ไขปัญหานี้แล้ว ในกรณีของฉันวางไฟล์ก่อนหรือหลัง -m 'message' ทำให้ไม่มีความแตกต่าง; การใช้เครื่องหมายคำพูดเดี่ยวเป็นปัญหา

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