¿Qué es un parche en el control de la versión de git?

Soy nuevo en el control de git y de versión, así que estoy tratando de descubrir qué es un parche y cómo es diferente del rest de actividades que hago en git.

¿Cuándo aplico un parche? ¿Sucede cada vez que me comprometo?

Puede ver en esta publicación de blog cómo puede crear un parche (colección de cambios que desea comunicar y aplicar a otro repository)

parche git

Véase también Contribuir a Rails con Git como otro ejemplo concreto.

Hoy en día, la request de extracción de GitHub hace que sea realmente fácil aplicar parches en los repositorys de GitHub, lo cual es útil cuando no queueboras directamente (es decir, no tienes derecho a enviar directamente a un repository).
De hecho, recientemente GitHub introdujo " mejores correos electrónicos de request de extracción " para mejorar la notificación de nuevos parches.

Patch es un progtwig de Unix que actualiza files de text de acuerdo con las instrucciones contenidas en un file separado, llamado file de parche.

Entonces, en otras palabras, puede significar el file con instrucciones o un progtwig que procesa ese file y lo aplica a algo.

Ahora, ¿qué es un file de parche? Digamos que tienes un file de text con 2 líneas:

This is line A. This is line B, or otherwise #2. 

Luego cambias la primera línea y ahora tu file se ve así:

 This is SPARTA. This is line B, or otherwise #2. 

¿Cómo describirías el cambio en el contenido del file? Puedes decir esa primera línea "Esta es la línea A". ha sido reemplazado por "Esto es SPARTA.", o incluso la última palabra "A" de la primera línea reemplazada por otra palabra "SPARTA". Y eso es exactamente lo que nos dice diff . Digamos que tengo dos versiones de este file, una llamada file1.txt y otra file2.txt, luego ejecuto diff y obtengo esto:

 $ diff -u file1.txt file2.txt --- file1.txt 2011-11-26 11:07:03.131010360 -0500 +++ file2.txt 2011-11-26 11:07:13.171010362 -0500 @@ -1,2 +1,2 @@ -This is line A. +This is SPARTA. This is line B, or otherwise #2. 

Con una descripción de los cambios, puede aplicarlo a un contenido inicial y get un contenido modificado. Y esos cambios, puestos en un formatting unificado que los progtwigs tipo "parche" pueden entender, se llaman files de parches. Es como que en lugar de get un pez de alguien, te enseñan a pescar, para que puedas sacarlo de las aguas tú mismo. Ahora, apliquemos nuestro parche a file1.txt para que se vea exactamente como file2.txt:

 $ cat file1.txt This is line A. This is line B, or otherwise #2. $ cat file2.txt This is SPARTA. This is line B, or otherwise #2. $ diff -u file1.txt file2.txt > changes.patch $ cat changes.patch --- file1.txt 2011-11-26 11:09:38.651010370 -0500 +++ file2.txt 2011-11-26 11:07:13.171010362 -0500 @@ -1,2 +1,2 @@ -This is line A. +This is SPARTA. This is line B, or otherwise #2. $ patch < changes.patch patching file file1.txt $ cat file1.txt This is SPARTA. This is line B, or otherwise #2. $ 

Puede pensar que es más fácil simplemente tener dos versiones de este file. Bueno, en este simple caso, eso es verdad. Pero cuando tienes muchos files, y esos files son muy grandes, es mucho más eficiente tener algunas líneas de cambios en lugar de dos copys de todo el set.

Cuando hablas en términos de git, el file de parche todavía significa lo mismo, pero usar diff + patch tú mismo sería una pesadilla. Por ejemplo, siempre tendrá que tener dos versiones del file (o incluso de todo el repository) desprotegidas para poder compararlas. No suena tan bien, ¿verdad? Así que git se encarga de todo el trabajo duro para usted: compara su file local con lo que hay en el repository con el que está trabajando, y puede mostrarlo como un "diff", o aplicar ese "diff" como un patch también confirma sus cambios, o incluso le permite aplicar algún parche que ya tenga. Sin profundizar en los detalles, en este sentido, git es absolutamente igual a otros sistemas de control de versiones como SVN, o incluso CVS o forzado.

¡Espero eso ayude!

Un parche es un pequeño file que indica qué se cambió en un repository. Generalmente se usa cuando alguien ajeno a su equipo tiene acceso de solo lectura pero tiene un buen cambio de código disponible. Luego crea un parche y se lo envía a usted. Lo aplica y lo envía al repository de git. Todos se benefician de la versión actualizada y el autor del parche no necesita acceso de lectura / escritura.

Es principalmente una cuestión de security (al less, para eso lo usa la gente).

Un parche es un set de diferencias entre uno o más files, para mostrar qué es diferente entre ellos. Por lo general, solo generará un parche para mostrarle a alguien lo que ha cambiado. Un ejemplo de cuándo puede hacer esto es cuando encuentra y repara un error en una aplicación de código abierto y luego publica la corrección en su rastreador de errores.

Un file de parche representa un único set de cambios que se puede aplicar a cualquier twig, en cualquier order. Al usar el parche, obtendrá diferencias entre uno o más files. Y luego, puede aplicar las diferencias (parche) para get los cambios en los files nuevos. Hay muchos usos para un parche en Git. Si tiene cambios no confirmados en su directory de trabajo y necesita hacer que los cambios se apliquen en otro lugar, solo cree un parche y aplique el parche.

 git diff > mypatch.patch 

Si tiene nuevos files en su repository (sin rastrear), entonces debe organizar el file antes de crear un parche (no confirmar), y use el siguiente command

 git diff --cached > mypatch.patch 

Luego puede aplicar el parche:

 git apply mypatch.patch 

Si desea realizar algunos cambios en un repository de git, que no tiene un permiso de escritura, solo realice los cambios y cree un parche entre ambos, y envíe el parche a alguien que tenga permiso para aplicar el parche. sus cambios deben ser agregados a ese repository de git.