如何使用Github优雅地提交一个patch

引言

这篇文章记录下使用github提交patch的过程,因为踩到了不少坑,浪费了很多时间,希望后面有同样问题的朋友能够少走弯路,遂记录这篇博客。

创建一个patch文件

首先我们需要从github上把最新版本拉下来,这里我们使用git format-patch创建一个patch文件,具体的操作步骤如下:

  1. git branch lizhaolongFix 创建分支
  2. git checkout lizhaolongFix 进入分支
  3. 进行你所添加的修改
  4. git commit -a -m “Fix1”
  5. git format-patch -M maste 与master比对生成一个patch文件,这其实是一个email文件
    在这里插入图片描述
  6. git checkout master 返回master
  7. git branch PATCH
  8. git checkout PATCH
  9. git am 0001-lizhaolong-Fix-AsyncLogging.patch 你的patch文件的名称
  10. 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

具体的过程是这样的:

  1. 点击设置: 在这里插入图片描述
  2. 点击账户:在这里插入图片描述
  3. 在SMTP(简单邮件传输协议)服务这里点击开启: 在这里插入图片描述

跟着步骤,最后会发送一个16位的授权码:
在这里插入图片描述
然后我们在要输入password的那里直接输入这个授权码即可,成功的样子就是这样的:
在这里插入图片描述
然后同步的,邮箱应该会给你弹出一个消息,告诉你邮件已经发送完成了,这个时候第一个patch就提交完毕了,等待回复就OK啦。

总结

不指望有回复,但是学习的过程确实比较有意思的,以上。
在这里插入图片描述

参考:

posted @ 2022-07-02 13:17  李兆龙的博客  阅读(630)  评论(0编辑  收藏  举报