2009-12-03 28 views
11

Bạn có thể cho tôi biết làm thế nào tôi có thể giải quyết lỗi 'vá không áp dụng' khi tôi cố gắng 'git apply-patch'?Lỗi khi chạy 'git apply'

$ git apply 0001-my.patch 
error: patch failed:test.xml:114 
error: text.xml: patch does not apply 

Tôi có 'test.xml' trong thư mục cục bộ của mình. Và khi tôi thực hiện 'trạng thái git', nó cho thấy tôi không có thay đổi cục bộ.

Cảm ơn bạn đã được trợ giúp.

Trả lời

2

Vâng, bản vá có thông tin về những gì cần được thay đổi thành gì. Nếu nội dung đầu tiên không khớp với nội dung tệp, bản vá sẽ không áp dụng.

12

Bạn có thể thử một:

git am -3 

Khi vá không áp dụng sạch, rơi trở lại vào ngày 3 chiều merge (git am doc)


qneill đề cập trong the comments rằng git apply now have a --3way option:

giờ đây bạn có thể áp dụng các bản vá của mình mà không phải giảm ngữ cảnh.
Vì nó sẽ để lại các nửa xung đột trong chỉ mục và cho phép bạn giải quyết xung đột trong cây đang hoạt động, "--3way" ngụ ý "--index" và không thể sử dụng với "--cached" hoặc "--reject".

Bạn có thể nhìn thấy nó trong git1.7.12 release note (tháng 8 năm 2012, một chút ít hơn 3 năm sau khi câu hỏi ban đầu)

"git apply" học để lung phiên bản cơ sở và thực hiện ba chiều merge khi một bản vá không chính xác áp dụng cho phiên bản bạn có.

+3

Có vẻ như git-apply có tùy chọn --3way hiện tại là 1.7.11.1 (xem http://git.661346.n2.nabble.com/PATCH-v4-00-19-quot-git-apply -3way-quot-td7562763.html) – qneill

+0

@qneill điểm tốt. Tôi đã chỉnh sửa câu trả lời để phản ánh tính năng mới đó. – VonC

0

Hoặc bạn cũng có thể muốn rebase với chính hay nguồn gốc

git rebase origin 

Chỉ cần chắc chắn rằng bạn đang ở trên đường đua cùng với những thay đổi mới nhất trước khi bạn sẽ bắt đầu áp dụng các bản vá lỗi từ kẻ khác.