Git补丁

1、创建补丁

 

1.1 git format-patch  起始哈希值..结束哈希值  

说明:创建补丁,哈希值前开后合(起始哈希值对应的提交没有被包含)

 

如:分支图示:A---B---C---D---E

命令:git  format-patch  C..E

结果:创建补丁文件D.patchE.patch

 

1.2 git format-patch  分支A         

说明:创建补丁,起始哈希值(当前分支和分支A的共同祖先哈希值) 结束哈希值(当前分支最新哈希值)

 

如:分支图示:                F---G---H   当前分支

                                              /

                              A---B---C---D---E     分支A

命令:在当前分支上操作  git  format-patch  分支A

结果:创建补丁文件F.patch G.patchH.patch

 

 

2、验证补丁能否应用成功

 

2.1 git apply --stat  补丁文件

2.1 git apply --check  补丁文件

 

 

3、应用补丁

 

3.1 git am -3 补丁文件

说明:出现冲突中断要求解决时

自动合并的文件已 进入暂存区,不需要手动add

冲突文件的状态是 UU,文件里用<<<  ===>>> 来标识,手动合并后需要手动add该文件

解决冲突后,用git am--resolved 继续应用补丁

 

如:补丁文件包含  文件1 文件2 文件3 (文件2 有冲突不能自动合并)

应用过程中断,显示状态

M     文件1

UU   文件2

M     文件3

手动解决文件2的冲突,然后git add 文件2

最后 git am --resolved

 

 

3.2 git am --reject  补丁文件

说明:出现冲突中断要求解决时

自动合并的文件放在工作区,需要手动add

生成.rej文件,参照.rej文件手动合并

手动add自动合并和冲突的文件

解决冲突后,用git am--resolved 继续应用补丁

 

如:补丁文件包含  文件1 文件2 文件3 (文件2 有冲突不能自动合并)

应用过程中断,显示状态

   M   文件1

??       文件2.rej

   M   文件3

参照文件2.rej手动解决文件2的冲突,然后删除文件2.rejgit add文件1 文件2 文件3

最后 git am --resolved

 

注:在应用补丁前,最好gitstatus 是空的(即所有修改的文件都进库,或者 git stash -u 来暂存修改未进库的文件),避免应用补丁过程需要解决冲突,未应用成功的文件存放在工作区或暂存区,和已有修改的文件混淆。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值