- Git 教程
- Git - 主页
- Git - 基本概念
- Git - 环境设置
- Git - 生命周期
- Git - 创建操作
- Git - 克隆操作
- Git - 执行更改
- Git - 审查更改
- Git - 提交更改
- Git - 推送操作
- Git - 更新操作
- Git - 存储操作
- Git - 移动操作
- Git - 重命名操作
- Git - 删除操作
- Git - 修复错误
- Git - 标签操作
- Git - 补丁操作
- Git - 管理分支
- Git - 处理冲突
- Git - 不同的平台
- Git - 在线存储库
- Git 有用的资源
- Git - 快速指南
- Git - 有用的资源
- Git - 讨论
- Git - 波斯语版本
Git - 补丁操作
Patch 是一个文本文件,其内容与 Git diff 类似,但除了代码之外,它还包含有关提交的元数据;例如,提交 ID、日期、提交消息等。我们可以根据提交创建补丁,其他人可以将它们应用到他们的存储库。
Jerry 为他的项目实现了 strcat 函数。Jerry 可以创建他的代码的路径并将其发送给 Tom。然后,他可以将收到的补丁应用到他的代码中。
Jerry 使用 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文件。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) {