2013-03-07 7 views
5

Ich versuche, Patch von diff und apply es zu erstellen. Mein Patch hat eine neue Datei und nach apply erhalte ich einen Fehler.Git apply erstellt keine neuen Dateien?

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 

Was ich falsch oder git apply tun schafft keine neuen Dateien?

+1

Gibt es einen Grund, warum Sie 'git format-patch' nicht verwenden möchten? –

+0

Ja, ein gemeinsames Interesse) –

Antwort

8

Sie erstellen Ihren Patch rückwärts - dieser Patch versucht löschen diese Datei. Ich denke, man wollte:

git diff origin/master master > patch1.diff 

Sie könnten git format-patch finden hilfreich sein. Wenn Sie momentan master ausgecheckt, können Sie einfach tun:

git format-patch origin/master 

, dass eine Reihe von Patch-Dateien ergeben Befehl, eine für jede begehen unterschiedlich zwischen Ihrer Branche und origin/master. Sie können diese dann unter Verwendung von git am anwenden und alle zusätzlichen Daten wie Commit-Nachrichten und Autoreninformationen beibehalten.

+1

Es ist noch bequemer, wenn Sie die Option '--stdout' verwenden. 'git format-patch --stdoutursprung/master | pbcopy' setzt den Patch in meine Zwischenablage (OS X) und 'pbpaste | git am' wird es auf das aktuelle Repo anwenden. –

+0

@Kevin - Ich mag es! –

+0

@CarlNorum dumm mir, danke. –

Verwandte Themen