git的patch功能调研

之前在英特尔实习的时候才接触过patch这个概念,在Linux kernel的贡献者都是通过patch提交代码的,各个开发者从代码库clone代码后,将修改的代码以patch的方式email给维护人员,这样以后的更新只需要将patch打进去即可,不用下载全部的代码,因为每次的修改都很微小,有相当大的部分都是重复的。

使用git 的patch功能 http://www.cnblogs.com/y041039/articles/2411600.html
方法一(通用标准patch,产生的patch适用于非git工程)
  • 最初在master(或别的分支上)
  • 新建分支修改bug: git checkout -b fix
  • 在fix分支上,提交修改内容: git commit -m “fix a bug”
  • 与master分支对比产生patch: git diff > patch
  • 使用git apply命令,在一条干净的分支上应用patch: git checkout master —> git checkout -b PATCH — > git apply –check patch —–> (补丁patch可以加入的话) git apply patch —> git commit -m “apply patch”
  • 切换到master上合并PATCH分支:git checkout master —-> git merge PATCH

注意:无论多少个文件、多少次commit的diff,都只会产生一个patch。

方法二(git专用patch)
  • 最初在master(或别的分支上)
  • 新建分支修改bug: git checkout -b fix
  • 在fix分支上,提交修改内容: git commit -m “fix a bug”
  • 将此次commit后的fix分支内容与master对比,根据commit msg生成一个patch: git format-patch -M master —->生成0001-fix-a-bug.patch
  • 使用git am命令,在一条干净的分支上应用patch: git checkout master —> git checkout -b PATCH —> git am 0001-fix-a-bug.patch —> git commit -m “apply patch”
  • 切换到master上合并PATCH分支:git checkout master —-> git merge PATCH

注意:每次commit,都只会产生对应的一个patch。

git am时出错: .git/rebase-apply still exists but mbox given
  • git am –abort(该命令将git的状态恢复到之前状态就可以继续提交patch了)
打补丁
  • patch -p1 < my.patch
取消补丁
  • patch -R -p1 < my.patch

补丁参考:http://linux-wiki.cn/wiki/zh-hans/%E8%A1%A5%E4%B8%81(patch)%E7%9A%84%E5%88%B6%E4%BD%9C%E4%B8%8E%E5%BA%94%E7%94%A8

多次commit合并成一个patch
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值