Git - Operación de parche

Patch es un archivo de texto, cuyo contenido es similar a Git diff, pero junto con el código, también tiene metadatos sobre confirmaciones; por ejemplo, ID de confirmación, fecha, mensaje de confirmación, etc. Podemos crear un parche a partir de confirmaciones y otras personas pueden aplicarlos a su repositorio.

Jerry implementa la función strcat para su proyecto. Jerry puede crear una ruta de su código y enviársela a Tom. Luego, puede aplicar el parche recibido a su código.

Jerry usa el Git format-patchcomando para crear un parche para la última confirmación. Si desea crear un parche para una confirmación específica, utiliceCOMMIT_ID con el comando format-patch.

[[email protected] project]$ pwd
/home/jerry/jerry_repo/project/src

[[email protected] src]$ git status -s
M string_operations.c
?? string_operations

[[email protected] src]$ git add string_operations.c

[[email protected] src]$ git commit -m "Added my_strcat function"

[master b4c7f09] Added my_strcat function
1 files changed, 13 insertions(+), 0 deletions(-)

[[email protected] src]$ git format-patch -1
0001-Added-my_strcat-function.patch

El comando anterior crea .patcharchivos dentro del directorio de trabajo actual. Tom puede usar este parche para modificar sus archivos. Git proporciona dos comandos para aplicar parchesgit amy git apply, respectivamente. Git apply modifica los archivos locales sin crear un compromiso, mientras git am modifica el archivo y crea un compromiso también.

Para aplicar el parche y crear un compromiso, use el siguiente comando:

[[email protected] src]$ pwd
/home/tom/top_repo/project/src

[[email protected] src]$ git diff

[[email protected] src]$ git status –s

[[email protected] src]$ git apply 0001-Added-my_strcat-function.patch

[[email protected] src]$ git status -s
M string_operations.c
?? 0001-Added-my_strcat-function.patch

El parche se aplica con éxito, ahora podemos ver las modificaciones usando el git diff mando.

[[email protected] src]$ git diff

El comando anterior producirá el siguiente resultado:

diff --git a/src/string_operations.c b/src/string_operations.c
index 8ab7f42..f282fcf 100644
--- a/src/string_operations.c
+++ b/src/string_operations.c
@@ -1,5 +1,16 @@
#include <stdio.h>
+char *my_strcat(char *t, char *s)
diff --git a/src/string_operations.c b/src/string_operations.c
index 8ab7f42..f282fcf 100644
--- a/src/string_operations.c
+++ b/src/string_operations.c
@@ -1,5 +1,16 @@
#include <stdio.h>
+char *my_strcat(char *t, char *s)
+
{
   +
   char *p = t;
   +
   +
   +
   while (*p)
   ++p;
   +
   while (*p++ = *s++)
   + ;
   + return t;
   +
}
+
size_t my_strlen(const char *s)
{
   const char *p = s;
   @@ -23,6 +34,7 @@ int main(void)
   {