本文共 1452 字,大约阅读时间需要 4 分钟。
现在很多大型的开源项目,如:Linux, U-Boot,都是通过patch来提交代码的。
普通开发者从软件仓库git clone下代码,修改代码、制作patch,最后用E-mail发送给对应代码维护者就好了。
Git最初作为Linux的版本控制工具,提供了透明、完整、稳定的patch功能。
Git提供了两种简单的patch方案。一是使用git diff生成的标准patch,二是使用git format-patch生成的Git专用patch。
为了修改代码,我们一般的做法是建立一个新分支:test
$ git branch* master$ git branch test$ git checkout testSwitched 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 masterSwitched to branch 'master'
在当前目录下产生补丁文件:patch,我们可以用git apply来应用补丁。
前面部分和上面一样,新建分支并修改代码。
制作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"
配置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--cc
转载地址:http://inloi.baihongyu.com/