Git - Operação de Patch

Patch é um arquivo de texto, cujo conteúdo é semelhante ao Git diff, mas junto com o código, também possui metadados sobre commits; por exemplo, commit ID, data, mensagem de commit, etc. Podemos criar um patch a partir de commits e outras pessoas podem aplicá-los em seu repositório.

Jerry implementa a função strcat para seu projeto. Jerry pode criar um caminho de seu código e enviá-lo para Tom. Então, ele pode aplicar o patch recebido ao seu código.

Jerry usa o Git format-patchcomando para criar um patch para o último commit. Se você quiser criar um patch para um commit específico, useCOMMIT_ID com o comando format-patch.

[jerry@CentOS project]$ pwd
/home/jerry/jerry_repo/project/src

[jerry@CentOS src]$ git status -s
M string_operations.c
?? string_operations

[jerry@CentOS src]$ git add string_operations.c

[jerry@CentOS src]$ git commit -m "Added my_strcat function"

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

[jerry@CentOS src]$ git format-patch -1
0001-Added-my_strcat-function.patch

O comando acima cria .patcharquivos dentro do diretório de trabalho atual. Tom pode usar este patch para modificar seus arquivos. Git oferece dois comandos para aplicar patchesgit ame git apply, respectivamente. Git apply modifica os arquivos locais sem criar commit, enquanto git am modifica o arquivo e cria commit também.

Para aplicar patch e criar commit, use o seguinte comando -

[tom@CentOS src]$ pwd
/home/tom/top_repo/project/src

[tom@CentOS src]$ git diff

[tom@CentOS src]$ git status –s

[tom@CentOS src]$ git apply 0001-Added-my_strcat-function.patch

[tom@CentOS src]$ git status -s
M string_operations.c
?? 0001-Added-my_strcat-function.patch

O patch é aplicado com sucesso, agora podemos ver as modificações usando o git diff comando.

[tom@CentOS src]$ git diff

O comando acima produzirá o seguinte 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)
   {