如何使用Github优雅地提交一个patch
引言
这篇文章记录下使用github提交patch的过程,因为踩到了不少坑,浪费了很多时间,希望后面有同样问题的朋友能够少走弯路,遂记录这篇博客。
创建一个patch文件
首先我们需要从github上把最新版本拉下来,这里我们使用git format-patch
创建一个patch文件,具体的操作步骤如下:
- git branch lizhaolongFix 创建分支
- git checkout lizhaolongFix 进入分支
- 进行你所添加的修改
- git commit -a -m “Fix1”
- git format-patch -M maste 与master比对生成一个patch文件,这其实是一个email文件
- git checkout master 返回master
- git branch PATCH
- git checkout PATCH
- git am 0001-lizhaolong-Fix-AsyncLogging.patch 你的patch文件的名称
- git commit -a -m “PATCH apply”
然后我们就可以提交这个patch了,我们需要使用的工具是git send-email
,很多机器上是没有默认安装的,所以需要我们安装一下,执行以下命令:
sudo apt-get install git-email
然后我们就可以使用git-email来向项目的维护人发邮件了,邮件的内容就是这个patch文件,git-email
的使用规则如下:
git send-email --to <maintainer’s email> --cc < mailing list> < your patch>
我相信你在第一次看到这个语句的时候会有点懵逼,不知道每一个选项是干什么用的,我贴上我使用时的格式,再逐一解释:
git send-email --to xxx@xxx.com 0001-lizhaolong-Fix-AsyncLogging.patch --smtp-server=smtp.qq.com
--to
后面是你要发送的邮箱地址--cc
后面是这个消息还要转发给谁< your patch>
中写你要提交的patch名称--smtp-serve
:我指定了一下smtp-server
这里我们需要配置下我们的gitconfig
,我直接贴出我的配置,方便其他朋友参考:
[user]
name = Super-long
email = 2339824768@qq.com
[credential]
helper = store
[sendemail]
smtpencryption = tls
smtpserver = "usr/sbin/sendmail"
smtpuser = 2339824768@qq.com
smtpserverport = 25
如果你像我一样配置的话,在进行send-email的时候的可能会遇到如下错误:
Login Fail. Please enter your authorization code.
解决的方法也不难,就是让那个让我们输入的密码其实是一个16位的验证码,而不是qq密码,我们需要在qq邮箱(对应的邮箱)获取一个验证码。网址如下:
https://service.mail.qq.com/cgi-bin/help?subtype=1&&no=1001256&&id=28
具体的过程是这样的:
- 点击设置:
- 点击账户:
- 在SMTP(简单邮件传输协议)服务这里点击开启:
跟着步骤,最后会发送一个16位的授权码:
然后我们在要输入password的那里直接输入这个授权码即可,成功的样子就是这样的:
然后同步的,邮箱应该会给你弹出一个消息,告诉你邮件已经发送完成了,这个时候第一个patch就提交完毕了,等待回复就OK啦。
总结
不指望有回复,但是学习的过程确实比较有意思的,以上。
参考: