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