一:git tag
linux
git tag列出已有的标签:git
使用特定的搜索模式列出匹配的标签:服务器
得到某个版本的源码:spa
$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
orm
git使用的标签有两种类型:轻量级的(lightweight)和含注释的(annotated)。新建含注释的标签会产生一个标签对象,而轻量级标签不会产生标签对象。server
轻量级的标签创建:对象
$git tag v1.0源码
这样就会给当前的commit打上v1.0这个标签。it
此时这个tag是一个引用,不是对象。io
含注释的标签创建:
$ 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