git diff得到pach文件并apply

场景举例:

你有一个main.c文件,已经将master分支发布给客户。但是发现一个bug, 于是乎你新建了一个master_fix分支,在这个分支上修改了main.c文件并修复问题。

此时,master分支上的main.c:

Cat
Dog
Elephent
Chicken
555
Bird

printf();

此时,master_fix分支上的main.c:  (将555改成了666, 在Cat下一行增加了一行Hello animals! , 动物们这么可爱为什么不打招呼!)

Cat
Hello animals!
Dog
Elephent
Chicken
666
Bird

printf();

 

现在你想将修改内容apply到master分支的main.c文件,可以使用如下方法: (当然你也可以使用其他的,例如git cherry-pick,  git merge等等等)

执行 git diff master  master_fix > fix.patch

以master为蓝本,将master_fix的改动保存到fix.patch这个文件中(可以随便起名字),该文件会保存到当前目录,其内容就是git diff master_fix master指令显示在屏幕上的东东;

看下fix.patch文件吧:(-表示删除动作,+表示增加动作,  如果这个分支有很多文件不同的话,都会在这个文件里面)

diff --git a/main.c b/main.c
index 446df7e..5410625 100644
--- a/main.c
+++ b/main.c
@@ -1,8 +1,9 @@
 Cat
+Hello animals!
 Dog
 Elephent
 Chicken
-555
+666
 Bird
 
 printf();

 

好了,已经得到了patch文件了,现在我们切到master分支:

git checkout master

执行 git apply  fix.patch

这时,main.c文件被修改了,相当于git替你改了文件并保存,执行改git status, git diff可以看到main.c已经被修改,然后执行

git commit -m"fix xxx"

大功告成!

 

常用场景:

给客户代码后,发现有问题,然后给人家发送一个patch文件,哈哈哈。

 

posted @ 2021-11-10 20:39  JadeCicada  阅读(283)  评论(0编辑  收藏  举报