Tôi đang sử dụng Linux, nhưng tôi nghĩ tôi thấy những gì bạn đang nói đến. Trong gitk
có tùy chọn "Ghi cam kết tệp" khi nhấp chuột phải vào một cam kết, sẽ trả về một hộp thoại thực hiện lệnh git diff-tree --stdin -p --pretty
theo mặc định.
git apply
chỉ dành cho việc áp dụng các khác biệt, tức là nó sẽ không tạo đối tượng cam kết để không được sử dụng. git am
phải là công cụ chính xác để thực hiện thao tác này vì nó tạo ra các đối tượng cam kết. Tuy nhiên, nó không hiểu được định dạng đầu ra của lệnh trên, và tạo ra lỗi bạn đang thấy.
Tùy chọn dễ nhất có thể là tạo bản vá sử dụng định dạng git am
hiểu cách sử dụng git format-patch
thay vì git diff-tree
. Có thể có cách để ép buộc git am
vào việc hiểu định dạng git diff-tree
, nhưng tôi không làm nhiều bản vá để không nhận thức được điều đó một cách dễ dàng.
Nguồn
2012-04-19 16:00:24
Điều này rất kém - sử dụng cùng một thuật ngữ như git. Tôi không hiểu ý của bạn bằng cách 'viết cam kết vào một tập tin' và tôi duy trì git-gui. Bạn có cam kết thay đổi tệp và sau đó tạo bản vá không? Các chi tiết quan trọng nếu bạn mong nhận được sự trợ giúp hữu ích. Bản vá được tạo ra như thế nào - * chính xác *. Như bạn đã lưu ý, git áp dụng và git am chấp nhận các tệp định dạng khác nhau - một dự kiến các bản vá, các email khác có bản vá nội tuyến và thông tin cam kết. Tôi nghi ngờ câu trả lời dưới đây thực sự là chính xác. – patthoyts
@patthoyts Làm cách nào khác để mô tả cách nhấp vào nút "Viết cam kết vào tệp"? –
Có vẻ như có tùy chọn "write commit to file" trong 'gitk', nó sẽ trả về một hộp thoại thực hiện lệnh' git diff-tree --stdin -p --pretty'. 'git am' dường như không hiểu định dạng này. 'git apply' chỉ áp dụng cho các diff, tức là nó sẽ không tạo đối tượng commit. –