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文件,哈哈哈。