¿Cómo puede mi cliente aplicar el parche creado por git diff
sin instalar git? He intentado usar el comando patch
, pero siempre solicita el nombre del archivo para el parche.¿Cómo aplicar el parche `git diff` sin instalar Git?
Respuesta
git diff > patchfile
y
patch -p1 < patchfile
trabajo, pero como muchas personas notan en los comentarios y otras respuestas parche no entiende añade, elimina y cambia el nombre. No hay más opción que git apply patchfile
si necesita manejar el archivo agrega, elimina y cambia el nombre.
EDITAR de diciembre de el año 2015
últimas versiones de patch
de comandos (2.7, publicado en septiembre de 2012) apoyo mayoría de las características del formato "diff --git", incluyendo cambios de nombre y copias, cambios de permisos y enlaces simbólicos (pero aún no diffs binarios) (release announcement).
Con tal que uno utiliza la versión actual/última de patch
no es necesario usar git
para poder aplicar su diff como un parche.
O use 'git diff> patchfile', pero' patch -p1
Si desea crear un archivo de parche de un subcampo del repositorio, puede usar la opción 'relative' como:' git diff --no-prefix --relative = my/relative/path> patchfile' –
¿No requiere esto que se instale git? La pregunta es cómo hacerlo sin git ¿verdad? – UpTheCreek
Prueba esto:
$ git apply file.diff
Ver pregunta: "sin git instalado" –
Gracias, esto también funciona para los usuarios de Windows. – motto
Downvoted, ya que OP dice: "sin git instalado" – scrapcodes
probar esto:
patch -p1 < patchfile
¿Qué hace el argumento -p1? – chrisjlee
Tiras de barra al principio. Ver [man patch] (http://unixhelp.ed.ac.uk/CGI/man-cgi?patch+1) – egor83
@chrisjlee 'git diff' pondrá los prefijos' a/'y' b/'en la salida , por lo que 'patch -p1' descuida aquellos para aplicar el archivo de parche. – wberry
Uso
git apply patchfile
si es posible.
patch -p1 < patchfile
tiene un posible efecto secundario.
git apply
también maneja el archivo agrega, elimina y cambia el nombre si se describen en el formato git diff
, que patch
no hará. Finalmente, git apply
es un modelo de "aplicar todo o abortar todo" en el que se aplica todo o nada, mientras que el parche puede aplicar parcialmente archivos de parche, lo que deja su directorio de trabajo en un estado extraño.
+1, la única respuesta en sí. Además, diff/patch no manejará enlaces simbólicos, lo cual es un problema si (por ejemplo) está revertiendo el parche del kernel de Linux 3.10. – ignis
Sí, 'git apply' es la mejor manera de hacerlo, pero esta pregunta específicamente pregunta cómo aplicar el parche * sin Git instalado *. –
Opciones '--dry-run --verbose' son útiles para determinar cuáles serán los efectos secundarios, si los hay. (usando el parche v2.5.8) – spyle
utilizo
patch -p1 --merge < patchfile
De esta manera, los conflictos pueden resolverse como de costumbre.
- 1. Cómo aplicar git diff - ¿parches binarios sin git instalados?
- 2. ¿Cómo puedo aplicar un archivo de parche en git
- 3. aplicar svn parche al repositorio de git
- 4. ¿Cómo aplicar un parche muy antiguo en Git?
- 5. ¿Cómo grep el git diff?
- 6. ¿Cómo aplicar un parche generado con el parche de formato git?
- 7. git ver fusión completa diff
- 8. No se puede aplicar el parche diff unificado en Solaris
- 9. Git-diff a HTML
- 10. Quiere excluir el archivo de "git diff"
- 11. ¿Cómo uso git diff -G?
- 12. git diff on date?
- 13. Cómo crear un parche sin compromiso en Git
- 14. explicación técnica de Git/Diff Patch
- 15. Git diff --stat explicación
- 16. Diff a git tenedor
- 17. GIT diff GUI
- 18. Cómo crear y aplicar el parche SVN?
- 19. Aplicar parche línea por línea
- 20. ¿Cómo git-apply un parche a una revisión anterior?
- 21. Aplicar un parche diff a una cadena/archivo
- 22. color Git diff a HTML
- 23. ¿Cómo hacer que diff funcione como git-diff?
- 24. "git diff" no hace nada
- 25. ¿Cómo genera git-diff las descripciones de trozos?
- 26. partidas Personalización en git diff
- 27. ¿El parche de formato Git es compatible con svn?
- 28. Utilice siempre el localizador para git diff
- 29. git diff con el filtro de autor
- 30. Cómo instalar el repositorio git en Bluehost
¿Alguien sabe cómo hacer esto si el parche incluye cambios de nombre? ¿El parche lo admite de forma nativa ahora? –
La pregunta debería ser: * ¿hay alguna manera * de aplicar un git diff sin instalar git? [Como se indica a continuación] (http://stackoverflow.com/a/17958129/519015), 'patch' no es totalmente compatible con este formato. –