git打补丁

参考1:https://www.jianshu.com/p/ec04de3f95cc

参考2:https://blog.csdn.net/sinat_20059415/article/details/80598347

参考3:https://www.jianshu.com/p/4e0bd72572cf

一,补丁的理解

1,补丁其实是基于commit的的管理,使项目开发低耦合可配置;git 中的每个commit都有对应的一个sha1 id;

2,有2种补丁方式:

.diff文件只是记录文件改变的内容,不带有commit记录信息,多个commit可以合并成一个diff文件。
.patch文件带有记录文件改变的内容,也带有commit记录信息,每个commit对应一个patch文件。

二,相关命令

1,打补丁

//方法一:format-patch
git format-patch 【commit sha1 id】-n #次提交(含)之前的几次提交

git format-patch 【commit sha1 id】 -1 #某个提交的patch

git format-patch 【commit sha1 id】..【commit sha1 id】 #某两次提交之间的所有patch

//方法二:
git diff  【commit sha1 id】 【commit sha1 id】 >  【diff文件名】#diff文件名后缀可以是.diff或者.patch

2,应用补丁

//检查patch/diff是否能正常打入
git apply --check 【path/to/xxx.patch】
git apply --check 【path/to/xxx.diff】

//打入补丁
git apply 【path/to/xxx.patch】#打单个补丁
git apply 【path/to/xxx.diff】
git am 【path/to/xxx.patch】#可以打多个补丁

3,解决冲突

参考:https://blog.csdn.net/weicaihui2008/article/details/99693829

出现冲突补丁会打入失败

继续打补丁

//1,自动合入 patch 中不冲突的代码改动,同时保留冲突的部分
git  apply [--reject]  xxxx.patch
#会生成后缀为 .rej 的文件,保存没有合并进去的部分的内容,可以参考这个进行冲突解决。解决完冲突后删除后缀为 .rej 的文件,

//2,解决完冲突后执行git add. 添加改动到暂存区

//3,执行git am --resolved或者git am --continue

跳过该冲突

git am --skip #不能解决想后面再说

恢复原分支并停止

git am --abort

 

posted @ 2020-03-06 21:16  小匡程序员  阅读(428)  评论(0编辑  收藏  举报