使用Git制作和提交patch

使用Git制作和提交patch

背景概况

现在很多大型的开源项目,如:Linux, U-Boot,都是通过patch来提交代码的。

普通开发者从软件仓库git clone下代码,修改代码、制作patch,最后用E-mail发送给对应代码维护者就好了。

Git最初作为Linux的版本控制工具,提供了透明、完整、稳定的patch功能。

Git提供了两种简单的patch方案。一是使用git diff生成的标准patch,二是使用git format-patch生成的Git专用patch。

git diff生成的标准patch

为了修改代码,我们一般的做法是建立一个新分支:test

$ git branch
* master
$ git branch test
$ git checkout test
Switched to branch 'test'
$ git branch
  master
* test

接下来就可以开始修改代码,修改完成之后,制作补丁:

$ git commit -a -m "commit message"
[test xxxx] commit message
 n file changed, n insertion(+), n deletion(-)
$ git diff master > patch
$ git checkout master
Switched to branch 'master'

在当前目录下产生补丁文件:patch,我们可以用git apply来应用补丁。

git format-patch生成的Git专用patch

前面部分和上面一样,新建分支并修改代码。

制作patch:

$ git commit -a -m "commit message" -s
[test xxxx] commit message
 n file changed, n insertion(+), n deletion(-)
$ git format-patch -M

git commit 增加-s参数是指在commit中添加Signed-off-by信息。

这里的-M是指生成最近M次commit的patch。

我们可以用git am来应用补丁。

生成的patch不仅有diff的信息,还有提交者、时间等等,还是一个E-mail文件。

提交者信息可以这样配置:

$ git config --global user.name "Your name"
$ git config --global user.email "Your email"

git send-email发送patch

配置E-mail信息:

$ vim ~/.gitconfig

以gmail为例:

[sendemail]
        smtpencryption = tls
        smtpserver = smtp.gmail.com
        smtpuser = yourname
        smtppass = yourpassword
        smtpserverport = 587
        from = yourname@gmail.com

然后就可以发送补丁了:

$ git send-email --to <maintainer's email> --cc <mailing list>  <your patch>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前提: 生成patch:git format-patch -M master生成指定patch,0163bed3b...
    yotods阅读 101,964评论 5 21
  • 1.设置 初次使用需要设置姓名和邮箱git config --global user.name "git用户名"g...
    jrg陈咪咪sunny阅读 768评论 0 1
  • 本片内容转自CSDN http://blog.csdn.net/ithomer/article/details/7...
    五娃儿阅读 4,956评论 2 88
  • 【幼儿说】原创,转载请标出处 孩子上学本来是高兴的事情,但每次假期后似乎都会遇上这样的氛围,孩子的情绪将蒙上异样的...
    幼儿说阅读 328评论 0 0
  • 仓皇度日。 十一月,北方连绵阴雨。 我恰好盯着雨水弄脏的球鞋。落在窗子的雨,百无聊赖地掷地有声。好像也记不起我要说...
    還笙阅读 273评论 0 0