Git - การทำงานของโปรแกรมแก้ไข

Patch เป็นไฟล์ข้อความที่มีเนื้อหาคล้ายกับ Git diff แต่พร้อมกับรหัสแล้วยังมีข้อมูลเมตาเกี่ยวกับการคอมมิต เช่นรหัสคอมมิตวันที่ข้อความคอมมิต ฯลฯ เราสามารถสร้างแพตช์จากคอมมิตและบุคคลอื่นสามารถนำไปใช้กับที่เก็บของตนได้

Jerry ใช้ฟังก์ชัน strcat สำหรับโครงการของเขา เจอร์รี่สามารถสร้างเส้นทางของรหัสของเขาและส่งให้ทอม จากนั้นเขาสามารถใช้โปรแกรมแก้ไขที่ได้รับกับรหัสของเขา

เจอร์รี่ใช้ Git format-patchคำสั่งเพื่อสร้างแพตช์สำหรับคอมมิตล่าสุด หากคุณต้องการสร้างแพตช์สำหรับคอมมิตเฉพาะให้ใช้COMMIT_ID ด้วยคำสั่ง 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

คำสั่งดังกล่าวสร้าง .patchไฟล์ภายในไดเร็กทอรีการทำงานปัจจุบัน ทอมสามารถใช้โปรแกรมแก้ไขนี้เพื่อแก้ไขไฟล์ของเขา Git มีคำสั่งสองคำสั่งเพื่อใช้แพตช์git amและ git applyตามลำดับ Git apply แก้ไขไฟล์ในเครื่องโดยไม่ต้องสร้างคอมมิตในขณะที่ git am แก้ไขไฟล์และสร้างคอมมิตด้วย

ในการใช้โปรแกรมแก้ไขและสร้างคอมมิตให้ใช้คำสั่งต่อไปนี้ -

[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

โปรแกรมแก้ไขถูกนำไปใช้เรียบร้อยแล้วตอนนี้เราสามารถดูการแก้ไขได้โดยใช้ไฟล์ git diff คำสั่ง

[tom@CentOS src]$ git diff

คำสั่งดังกล่าวจะให้ผลลัพธ์ดังต่อไปนี้ -

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