Git - Operazione Patch

Patch è un file di testo, il cui contenuto è simile a Git diff, ma insieme al codice ha anche metadati sui commit; es. ID commit, data, messaggio commit, ecc. Possiamo creare una patch dai commit e altre persone possono applicarli al loro repository.

Jerry implementa la funzione strcat per il suo progetto. Jerry può creare un percorso del suo codice e inviarlo a Tom. Quindi, può applicare la patch ricevuta al suo codice.

Jerry usa il Git format-patchcomando per creare una patch per l'ultimo commit. Se vuoi creare una patch per un commit specifico, usaCOMMIT_ID con il 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

Il comando precedente crea .patchfile all'interno della directory di lavoro corrente. Tom può usare questa patch per modificare i suoi file. Git fornisce due comandi per applicare le patchgit ame git apply, rispettivamente. Git apply modifica i file locali senza creare commit, mentre git am modifica il file e crea anche il commit.

Per applicare la patch e creare il commit, utilizzare il seguente 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

La patch viene applicata con successo, ora possiamo visualizzare le modifiche utilizzando il file git diff comando.

[[email protected] src]$ git diff

Il comando precedente produrrà il seguente risultato:

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)
   {