位置:首頁 > 其他技術 > Git教學 > Git 補丁操作

Git 補丁操作

補丁是文本文件,其內容是相似於Git diff,但隨著代碼,它也有元數據有關提交,如提交ID,日期,提交信息等,我們可以創建補丁提交和其他人可以將它們應用到自己的資料庫。

Jerry 為他們的項目實現strcat函數。 Jerry 可以創建自己的代碼路徑發送到Tom。那麼他就可以收到Jerry 的代碼補丁。

傑裡使用Git format-patch 命令來創建最新提交的補丁。如果想創建補丁具體提交,然後使用COMMIT_ID 和 ormat-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文件裡在當前工作目錄。 Tom可以使用這個補丁修改他的文件。 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)
{