2011-10-25 10 views
25

Mam plik o nazwie test_module.c, który ma pewne różnice, które chcę zastosować do mojej lokalnej kopii roboczej.format-poprawka dla pojedynczego pliku

Próbowałem utworzyć plik poprawki z pilota, wykonując następujące czynności. Jednak git nie narzekał na żadne błędy. I nie utworzyłem żadnego pliku poprawki.

git format-patch master/dev_branch test/test_module.c 

Jest możliwe, aby stworzyć łatkę pojedynczego pliku, że mogę się ubiegać?

(Używanie git wersję 1.7.5.4)

Odpowiedz

30

Jeśli dasz git format-patch pojedynczą zmianę, będzie produkować łatek dla każdego popełnić od tej wersji. Jeśli nie widzisz danych wyjściowych z tego polecenia, to podejrzewam, że nie było żadnych zmian w tym pliku między origin/master a bieżącym HEAD. Jako alternatywę możesz podać zakres rewizji (np. origin/master~3..origin/master), który obejmuje zmiany wprowadzone do tego pliku. Lub, jeżeli zmiany chcesz produkować poprawkę dla dopiero zawartych w pojedynczym popełnić na czubku origin/master, można użyć parametru -1, jak w:

git format-patch -1 origin/master test/test_module.c 
+0

Użyłem następujących rzeczy z hashem będącym ostatnim zatwierdzeniem. git format-patch [hash] origin/master test/test_module.c Jednak mam te błędy. Co zwykle by je powodowało? error: patch failed: test/test_module.c: 176 error: test/test_module.c: patch nie ma zastosowania Dzięki. – ant2009

+0

Myślę, że możesz zamiast tego użyć 'git format-patch [hash] .. origin/master test_module.c' lub' origin/master' może być traktowane jako ścieżka. –

+1

Czy masz jakieś pojęcie, gdzie jest to udokumentowane? Oficjalna strona podręcznika nie wydaje się nic mówić o tym, że należy podać plik (choć działa): https://git-scm.com/docs/git-format-patch. –

11

Można użyć następującej składni do tworzenia poprawki do pojedynczego pliku:

git format-patch [commit_hash] [file] 
+0

to rzeczywiście działa! pokazany sha1 jest niepoprawny, ale dostarczył mi poprawną poprawkę, którą chciałem. – cnst

Powiązane problemy