Làm thế nào để git cam kết một tập tin / thư mục


216

Đã thử lệnh sau:

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

Nhận lỗi trong phiên bản 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.

Là cú pháp không chính xác cho các tập tin singe hoặc thư mục cam kết?

TRẢ LỜI: Các đối số đã được mong đợi theo thứ tự này ...

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

CẬP NHẬT: nó không nghiêm ngặt nữa :)


1
Bạn có chắc là bạn có phiên bản chính xác? Cập nhật lên 1.5.2.1? 1.5.2.1 bây giờ đã hơn 4 tuổi.
CB Bailey

Có bất cứ điều gì cấm bạn nâng cấp git?
Adam Dymitruk

BTW: Đây là một VM xuất hiện từ một công thức cũ. Git địa phương đã được cập nhật, không nhận ra phiên bản này là cổ xưa. Nghiêm khắc thay đổi.
doublejosh

Câu trả lời:


352

Lập luận của bạn là theo thứ tự sai. Hãy thử git commit -m 'my notes' path/to/my/file.ext, hoặc nếu bạn muốn rõ ràng hơn , git commit -m 'my notes' -- path/to/my/file.ext.

Ngẫu nhiên, git v1.5.2.1 là 4,5 tuổi. Bạn có thể muốn cập nhật lên phiên bản mới hơn (1.7.8.3 là bản phát hành hiện tại).


2
Bạn thực hiện một quan sát tốt. Tuy nhiên, Git 1.7.5.1 thú vị trên Windows hoàn toàn chấp nhậngit commit path_to_file -m 'message'
Sri Sankaran

@SriSankaran: Âm thanh như họ đã dạy nó để nhận ra các đối số không theo thứ tự sau đó. Nhưng theo tài liệu, thứ tự đúng là đặt danh sách tập tin cuối cùng, và có lẽ nên bám vào phiên bản tài liệu của mọi thứ.
Lily Ballard

Cảm ơn. Thứ tự của các tin nhắn này đã thay đổi ... hoặc ít nhất là mức độ nghiêm ngặt của đơn hàng đã thay đổi;)
doublejosh

1
@DavidDimalanta: Ý bạn là gì?
Lily Ballard

1
@ihebiheb Nhìn ngay bây giờ tôi không thấy bất kỳ thông số phi cờ khác để git commitvì vậy tôi đoán câu trả lời là "không có gì", nhưng trong nhiều git khác lệnh --này khác biệt đường dẫn từ đối số dạng đầm khác (ví dụ, với git lognhững --ngăn chặn một con đường từ thay vào đó được hiểu là một phạm vi sửa đổi)
Lily Ballard


16

Nếu bạn đang ở trong thư mục chứa tệp

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

1
nếu tôi đã có trong tệp, tôi có cần một "./" hàng đầu (dấu chấm gạch chéo) không? tôi có thể sử dụng git commit -m "my note" name_of_file.txt?
Chris22

@ Chris22 Tôi không chắc ý của bạn là "nếu tôi đã có trong tệp" (có thể bạn có nghĩa là "trong thư mục"?) ... ./chỉ là cú pháp đường dẫn bình thường, nhưng vâng, không cần thiết trong ví dụ này.
Jonathan Cross

7

Sử dụng -otùy chọn.

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

-o, - chỉ cam kết các tệp được chỉ định


Tùy chọn đó không cần thiết. Nếu bạn bao gồm một trang tệp trong lệnh cam kết của mình, nó sẽ chỉ cam kết các tệp đó.
doublejosh

Rất tốt để biết nếu bạn muốn đảm bảo khi nhắn tin với các thông số khác, ví dụ:--amend
Tomas Varga

5

Chỉ định đường dẫn sau khi nhập thông báo cam kết, như:

git commit -m "commit message" path/to/file.extention

4

Đối với git 1.9.5 trên Windows 7: "Ghi chú của tôi" (dấu ngoặc kép) đã khắc phục vấn đề này. Trong trường hợp của tôi, hãy đặt (các) tệp trước hoặc sau'm 'tin nhắn'. không có sự khác biệt; sử dụng dấu ngoặc đơn là vấn đề.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.