2013-03-07 8 views
5

Tôi đang cố tạo bản vá theo số diffapply. Bản vá của tôi có tệp mới và sau apply Tôi gặp lỗi.Git áp dụng không tạo tệp mới?

git diff master origin/master > patch1.diff 
git apply patch1.diff -v 

Checking patch test3... 
error: test3: No such file or directory 

Patch:

diff --git a/test3 b/test3 
deleted file mode 100644 
index df6b0d2..0000000 
--- a/test3 
+++ /dev/null 
@@ -1 +0,0 @@ 
-test3 

Những gì tôi đang làm sai hoặc git apply không tạo ra file mới?

+1

Có lý do nào bạn không muốn sử dụng 'git format-patch' không? –

+0

Có, một sở thích chung) –

Trả lời

8

Bạn đang tạo bản vá của mình ngược - bản vá đang cố gắng xóa tệp đó. Tôi nghĩ bạn muốn:

git diff origin/master master > patch1.diff 

Bạn có thể tìm thấy git format-patch để hữu ích. Nếu bạn đang có master kiểm tra ra, bạn chỉ có thể làm:

git format-patch origin/master 

Đó chỉ huy sẽ mang lại một loạt các tập tin vá lỗi, một cho mỗi cam kết khác nhau giữa chi nhánh và origin/master. Sau đó, bạn có thể áp dụng chúng bằng cách sử dụng git am và giữ lại tất cả dữ liệu bổ sung như thông báo cam kết và thông tin tác giả.

+1

Thậm chí còn thuận tiện hơn nếu bạn sử dụng tùy chọn '--stdout'. 'git format-patch - origin/master gốc | pbcopy' đặt miếng vá vào clipboard của tôi (OS X) và 'pbpaste | git am' sẽ áp dụng nó cho repo hiện tại. –

+0

@Kevin - Tôi thích nó! –

+0

@CarlNorum ngu ngốc tôi, cảm ơn bạn. –