一:git tag
git tag列出已有的标签:
使用特定的搜索模式列出匹配的标签:
获得某个版本的源码:
$mkdir ../linux-2.6.11 $git archive -v v2.6.11 | (cd ../linux-2.6.11/ && tar xf -) $head -4 ../linux-2.6.11/Makefile
git使用的标签有两种类型:轻量级的(lightweight)和含注释的(annotated)。新建含注释的标签会产生一个标签对象,而轻量级标签不会产生标签对象。
轻量级的标签建立:
$git tag v1.0
这样就会给当前的commit打上v1.0这个标签。
此时这个tag是一个引用,不是对象。
含注释的标签建立:
$ git tag -a [name] -m [“xxxx”]
建立含注释的标签会产生一个标签对象:
可以看到在创建标签后对象数增加了一个。
二:git bisect
如果一个项目到某一个版本发现一个错误,你还知道之前某个版本是好的,那么可以用git bisect来定位最先出现bug的版本。可以:
git bisect start
git bisect bad 现在这个版本是有bug的
git bisect good good_commit good_commit是好的版本,你可以用tag表示,也可以用那20byte的前2个byte表示
我的这个意思是,如果数大于等于5就是bug,这里找到了第一个大于等于5的commit。
三:git format-patch
git format-patch -2 -o ~/patch/
git format-patch是用于把当前的git目录中的commit生成的patch文件,并组织成UNIX mailbox的邮件格式。--cc后指定的是邮件的抄送接收人。-2表示只处理最后两次commit
四:git send-email
git send-email --to xxx@xxx --to xxx@xx --cc xxx@xxx --bcc xx@xx ~/patch
git send-email用于把刚才生成的patch文件直接以email的方式发送出去,要用这个命令需要保证正确配置了SMTP服务器的相关信息。用git直接生成patch邮件发送到邮件列表是一个很方便的方式,而且可以保证发出来的邮件有比较统一的格式,方便别人来审阅你的patch。
git config file [sendmail] smtpencryption = tls smtppass = xxxx smtpserver = smtp.gmail.com smptuser = kernellwp@gmail.com smtpserverport = 587