One Way (feat Mic Righteous & Maiday) - Naughty Boy
试听及下载百度即可 ,请根据回答先后,采纳最先回答正确者,谢谢!
歌词:
[Intro - Maiday]
What if the very thing that threatens you, is the very thing that beckons you
Roll up your sleeves, pull down you're hood
Why do all the bad things feel so good
[Hook - Maiday]
Because theres only one way, one way to fix it
One way, one way to make it better
One way to get out of this place if you want it
[Verse 1 - Mic Righteous]
If you want it you can fix it, there's many who have dared,
I tried, I've been inside for twenty two years,
You could lose everything, they could bury you here
Very few leave in a merry mood here
But you never knew I've been in every room here,
I know a few secrets that very few share, but listen
They don't even notice me, a bit of courtesy to clean the dirt you leave
its a one way street can you work with me
its a five-star suite, something lurks beneath
don't scratch the surface, don't turn a cheek
don't speak of anything you have heard or seen
the lonely ignore you, the more you speak
and don't forget to wash your hands before you leave
there's something fishy in Cabana, maybe its the pirahnas
this place will turn you crazy, think they're saving me for afters a master
[Hook]
[Verse 2 - Mic Righteous]
Yeah don't forget to wash your hands before you leave round here
We've gotta clean this toilet
Can't sleep or breathe, the heat is boiling
and in between good and evil, don't eat the poison
follow your heart, if you can't beat them, join them
walk into reception, seek employment
There's one way to change if two of us can make it
Why is it the bad things that always feel the greatest
Bottle of grey goose, you're wearing the same suit
but you don't look as good as you did when you came through
在具体下面的工作之前,有两个概念是与Eclipse不大相同的,即Project和Module。在Android Studio中,一个Project并不是Eclipse的project,倒是有点像workspace(或者说任务吧),而Module才是与Eclipse的project相似的。所以,一个Project中可以包含多个Module,多个Module在一起共同构成一个Project,每个Module可以是一个库,也可以是一个可运行的Module(对应可运行的apk)。
1、启动Android Studio,本文使用的是080版的。
2、准备需要在Android Studio中打开的项目。这里以 请将对应的zip文件下载下来并解压缩,这是一个滚动控件如ScrollView滚动到超出边界时会出现高光现象的项目。之所以以这个项目为例,是因为在导入这个项目时,出现了几个问题需要解决。
3、修改项目中所需的Gradle软件包需求。
找到 EdgeEffectOverride-master\gradle\wrapper下面的gradle-wrapperproperties文件,使用Notepad++之类的文本文件工具打开它,里面的这一行(红色部分):
#Wed Oct 02 23:50:13 BST 2013
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
请将红色部分改为你的机器上已安装的Gradle版本,比如我这里是gradle-112-allzip,如图所示(在C:\Users\Administrator\gradle\wrapper\dists\gradle-112-all\2apkk7d25miauqf1pdjp1bm0uo,你的机器可能与这略有不同,因为最后一个文件夹名是随机生成的):
如果不做这步修改的话,不同的项目要求的Gradle版本不同,Android Studio不得不下载多份Gradle软件包放到C:盘上,其实没有必要,因为每个Project会提出它所需的Gradle最低版本要求,可以打开Project中的buildgradle文件看到(红色部分):
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'comandroidtoolsbuild:gradle:06+'
}
}
这里的例子是要求06以上版本的Gradle,因为我们的机器可能已经存在比这个版本更高的Gradle,因此不需要像上面要求的那样去下一份gradle-18-allzip的文件,直接用机器中已有的即可。顺便说一下,可以通过 (请将蓝色部分xxxzip改为所需的文件名,比如gradle-112-allzip,其它版本也是一样),这样手工下载下来,然后放到C:\Users\Administrator\gradle\wrapper\dists\gradle-112-all\2apkk7d25miauqf1pdjp1bm0uo里面,不需要解压缩,Android Studio会自己解压缩的。
4、点击Import Project。
定位到项目所在的目录,找到其中的buildgradle文件,然后点击OK按钮。
5、遇到的问题
首先会提示一个错误,大意是使用了不支持的Gradle版本,请使用Gradle110,如下:
此时点击下面的“Gradle settings”蓝色链接,出现下面的窗口:
选中“Use default gradle wrapper(recommended)”推荐的选项,点击OK按钮即可。回到前一个界面时,再点击Fix Gradle wrapper and re-import project蓝色链接,这样就开始修正并自动构建Project了。
在gradle构建project过程中,底部出现下图所示的提示信息,见红色感叹号的两行:
其中第一个是说DefaultGroovMavenDeployer缺少了nexusUsername属性,第二个是说必须使用更新版本的Android Gradle插件。
先纠正第一个问题,在Android Studio中打开EdgeEffectOverride模块中的buildgradle文件,删掉最后那行(见截图底部蓝色选中部分):
好了,删掉最后这行,Android Studio会自动保存。注意,如果是误修改的话,可以按Ctrl+Z后退,但若要重新前进的话,快捷键是Ctrl+Shift+Z,而不是平常惯用的Ctr+Y,Ctrl+Y在Android Strdio中是删除当前行的意思。
接下来处理第二个问题,打开EdgeEffectOverride-master项目下面的buildgradle文件
蓝色选中部分就是要修改的内容,奇怪的是Android Studio已经自动帮我们改好了,已经是当前的Gradle插件版本了。
最后,点击顶部的“Try Again”链接
不过,又是出现新的问题:
意思是说项目使用的SDK Build Tools版本1801太低了,最低要使用1910,没办法,只好按照提示改了。
继续在Android Studio中分别打开EdgeEffectOverride和EdgeEffectOverrideSample这两个模块下面的buildgradle文件,将其中的buildToolsVersion后面的数字统统改成1910,如下图中的红色标记部分,记得两个buildgradle文件都要改。
好了,点击编辑器顶部的“Try Again”,经过Gradle一番忙碌之后,一切终于好了,下载终于可以运行了。
6、点击绿色的三角箭头,EdgeEffectOverrideSample跑起,其中EdgeEffectOverride是EdgeEffectOverrideSample运行依赖的模块(相当于Eclipse中的library)。
市面上的蜜粉有很多种,不同的蜜粉适合不同的肤质,定妆效果也不同,平价好用的蜜粉是大家都非常喜欢的,妆容的持久度和自然都要靠蜜粉。
蜜粉哪个牌子比较好用
1CHANEL 轻盈完美蜜粉
香奈儿的这款蜜粉粉质特别细腻细腻,而且看起来很晶莹剔透~用起来是透亮的裸肌效果,这款蜜粉是不带闪,不增白的,所以用起来特别自然,用过以后肌肤也不会感觉很干燥,而且定妆效果特别好,可以保持妆容长久不暗沉。
2RMK 轻透蜜粉
RMK的这款蜜粉就是我现在正在使用的一款蜜粉,超级爱它的,这款蜜粉的粉质特别细腻,而且用过以后真的有种磨皮的感觉,上妆是哑光雾面的效果,对油皮的小仙女特别友好,而且持妆效果特别好!
3MAKE UP FOR EVER HD蜜粉
玫珂菲的这款蜜粉粉质特别特别细腻,上脸隐形毛孔的效果超级好的,呈现的效果是很柔和的雾面感,控油定妆的效果也是一级棒,而且我很喜欢它的设计,里面有个有弹性的软网隔层,取量特别方便!
4罗拉柔光透明蜜粉
LM家的这款蜜粉在网上还是挺火的,毕竟好用的产品基本都已经被大家扒出来了,这款蜜粉的颜色很接近肤色,上脸有轻微的遮瑕效果,隐形毛孔的作用很不错,而且有提气色的效果,控油效果也还不错!
5纪梵希轻盈无痕明星四色散粉
纪梵希的这款四宫格散粉绝对是蜜粉中的元老级人物,这款蜜粉的粉质也是特别细腻,而且气色的组合对于修饰肤色,隐形毛孔有很好的作用,这款蜜粉很推荐肤色比较暗沉的小仙女使用,提亮的效果很不错!
平价蜜粉哪个牌子好用
一、无印良品蜜粉
参考价格:88元
产品概述:这款MUJI蜜粉,相信也有很多人入手过吧,因为真的是很便宜用起来也不会心疼,同样的和他们家很多产品一样敏感肌宝宝们也完全可以使用哦~粉质是非常细腻的没有颗粒感,因为主要成分是滑石粉,和那种爽身粉感受没有什么不一样,但是也会比较容易卡纹滋润度不是很够。从肤色提亮方面来说还是有一点提亮的效果的~
产品优点:
1便宜大碗,设计小巧不占地方,很适合用来外出补妆方便携带。
2自然提亮肤色的效果很好,很好的控油同时能够打造微微的珠光感,很适合打造活力的元气妆容。
3内含粉扑也是很贴心的,粉扑的绒比较细腻容易上妆。
4配方安全无刺激敏感肌也试用,没有添加额外的防腐剂香料矿物油等等刺激成分。
产品缺点:
1粉质是很细腻但是持妆力不是很好,需要经常补妆~
2控油能力相对来说不是很持久,只能做到一个基本控油的状态,如果是大油皮来使用的话可能不是很适合了~
二、悦诗风吟散粉
参考价格:50元
产品概述:这款产品依旧是很亲民的价格,可以放心入手也不会心疼,透明的白色质地也不会影响妆效,此款专为控油定妆设计的遮瑕效果相对来说很弱。有薄荷成分清清凉凉的体验感,味道也是薄荷的清淡味,适合各种肌肤使用哦~
产品优点:
1粉质非常细腻一点都不输给大牌,不用担心浮粉~
2控油效果表现比较好,打造出来的妆容也是透明哑光质感。
3简直就是白菜价!夏天头发油的话也可以用来急救也不会心疼。
产品缺点:
1作为干皮使用的话还是比较费劲的,会比较干一些。
2对皮肤毛孔小瑕疵的遮盖能力比较低,反而会放大部分缺点。
三、美宝莲 MASTER fix 蜜粉
参考价格:59元
产品概述:这个超推荐!非常好用不输其他大牌,粉质很细很细能轻易地打造出高级妆感,不但能轻松修饰毛孔和细小下次,对面部也有很好的柔光效果。蕴含精纯矿物微粉层层挑选,品质更纯净能更好的贴合肌肤,肌肤更自然更无暇。
产品优点:
1不仅产品很好用附带的粉扑也特别赞!能够把粉均匀的分散开,抓粉能力很均匀轻轻拍在脸上也是刚刚好,自带一键美颜磨皮效果。
2持久度也是真的没话说,控油哑光妆效一步到位,补妆也是真的很方便,随便拍几下就可以了。
3万能搭配气质,不管是和那种底妆产品搭配使用都很完美,不会浮粉不会影响妆效,油皮用了之后马上回变成哑光柔感肌哦~
4可以多次补妆,透明颗粒不会让妆感变得厚重不自然~
平价好用的蜜粉推荐
1、美康粉黛玫瑰蜜粉
国货美康粉黛蜜粉外包装比较古风,比较简约不会太过复杂,比较容易让人记住。粉质上也比较细腻,可以隐藏毛孔,控油能力也不错,性价比还是蛮高的。
2、韩后散粉蜜粉
粉质很细,比较轻柔,上脸之后控油还是不错的,比较小巧方便外出携带,淡淡的香味,还蛮好闻的,性价比高,值得入手。
3、Mistine 24小时定妆蜜粉
Mistine是泰妆里比较火的品牌了,它家的控油效果没话说了。22g超大一盒,感觉也可以用到"天荒地老",又炒鸡便宜的,追求性价比的不二之选。
4、娥佩兰散粉蜜粉
娥佩兰家最出名应该就是薏仁水了,不过它家的彩妆也是平价好用的。这款蜜粉分三个颜色,根据肤色选,粉质还是比较细腻的,用起来控油效果还有隐藏毛孔效果还是不错的,很对得起价格。
5、DHC 紧致焕肤保湿蜜粉
DHC家的蜜粉也是三色可选,粉质比较细,略带珠光,不过上脸之后比较自然,外包也是比较粉嫩可爱的,满足少女心,整体上性价比还是蛮高的。
蜜粉和散粉的区别
蜜粉和散粉虽然都是用来定妆的,区别在于散粉还可以用来遮盖脸上的瑕疵,在功能上来说,比蜜粉更加完善。而蜜粉的特点在于更加清透。用后妆面显得干净,蜜粉比散粉细没有遮瑕的功能,但是一般有吸油的功能而且现在蜜粉的色号多一些,在修正肤色方面比粉饼要好一些。散粉是遮瑕用的,也可以用做妆容的升华而且是用在粉饼之上进一步定妆的,能使肤色更通透自然并且在出油出汗化妆后,先用吸油纸吸去油脂后,再用散粉补妆效果极佳。
应该是美国人发明的。
"POP® is not only the market leading innovator in blind rivets but also the original blind rivet manufacturer"
POP是美国Emhart公司旗下品牌。Emhart发明了铆钉,拉铆枪应该也是Emhart公司发明的。
现在Emhart公司已经和英国Avdel公司、荷兰Masterfix公司一样,被美国Stanley Black & Decker集团收购,归于Stanley紧固系统旗下。这中间的过程有点小复杂,总之是大鱼吃小鱼,小鱼吃小虾的过程,并且这一过程并不止步。
很多爱化妆的妹纸都知道,化好妆的最后一步需要用蜜粉做定妆,这样才能让妆容更服帖完美又持久!但是,你的蜜粉还只是用来做定妆吗?快来看看蜜粉,还有哪些神奇妙用吧?
蜜粉能用在嘴唇上吗
蜜粉这个东西,在一定价位范围内,其实没有很大的差别。它对妆效的影响,更多取决于上妆手法和上妆工具。有的人会觉得蜜粉干,其实是她沾取的时候沾太多了。有的人会觉得起皮,可能是因为用化妆刷定妆的时候,力度不够轻。蜜粉能令唇妆更持久,涂了口红后,用纸巾覆盖嘴唇,然后蘸取少量蜜粉,轻刷于纸巾上,透过纸巾的纤维层可起到持久定妆,增加唇部妆容的哑光质感效果。
蜜粉有哪些妙用
1、令底妆更持久
恰当地使用蜜粉,不但能让妆容看起来更加均匀,还能让底妆更加持久,不管你用粉刷还是粉扑,小香建议你蘸取少量蜜粉后,只需要让化妆工具轻轻贴合肌肤,快速将蜜粉“弹”在肌肤上。之后再用一把干净的大号粉刷,将浮粉轻轻刷匀即可。可以令肌肤更加剔透,起到持久定妆的效果。
2、令眉妆更易上色
首先以眉笔定出眉型,用细的刷子蘸点水,先将蜜粉薄薄一层扫于眉毛上,然后再用眉笔为其上色,可令眉妆更加持久,且眉毛的自然度也会更好哦!
3、令眼妆更持久
用蜜粉轻轻的薄刷一层在眼睑上面,就可以起到令眼线持久、不晕染,之后再进行后续的眼妆,也可以持久不脱妆哦!
4、令睫毛又长又浓密
涂上睫毛膏后,可以先用棉花棒或蜜粉刷沾取少量蜜粉,并轻轻扫在睫毛上,然后接着再涂一层睫毛膏,这样就可以打造出浓密、卷翘的美睫毛啦!
5、快速清洗化妆刷上的颜色
沾上颜色的刷子只需沾取少量蜜粉,便可令化妆刷上的颜色脱落。但要记得这个方法没有清洁消毒的作用哦,用过的化妆工具还是要进行彻底清洁才可以啦!
蜜粉有哪些种类
1、透明蜜粉:固定妆容,柔光磨皮
只要是用在淡妆、无需太多光泽修饰的日常妆上,因为粉质很细很细很细,每次打开盒都是一缕轻烟~不含油分、透明丝柔,上妆后就是有点雾面妆感,用在爱出油的区域,令妆容干净,推迟出油时间,像这样的夏天,大概能比没用蜜粉推迟一两小时。
2、裸粉蜜粉:消除阴影,增加好气色
用偏厚圆的眼影刷蘸取,轻扫过眼下,通过光泽感来消除泪沟带来的阴影,让人看起来没那么疲劳。也可以当眼影第一步打底。如果要当定妆蜜粉,建议还是用圆形大粉刷,用尽量少的粉,刷尽量多的肌肤,光泽才刚刚好。
3、肤色蜜粉:随时补妆,去油,补色差
当你用纸巾轻按脸上油光时,这样的肤色散粉,扫过出油毛孔大的额头、鼻翼两侧,不仅立马去掉油光,也让肤表更平滑,也有点补色效果。依然是那句,不要刷太多,蘸粉后记住弹粉去余粉。
平价蜜粉推荐
无印良品蜜粉
家喻户晓的MUJI蜜粉,很多人买它,除了因为便宜之外,还因为它敏感肌可用。
妆效:珠光、自然色,有一点肤色,会有整体的提亮作用。
粉质:非常细,细到看不清颗粒,因为主要成分是滑石粉,所以跟婴儿用的爽身粉感受几乎一样,细但仍然会卡纹。
优点:便携,小小一个,不占地方,重量轻,但分量不少,可以用一年的。珠光效果刚刚好,不会油光满面,但是又有胶原蛋白满面的元气感。自带粉扑,而且有一个小内盖,阻挡散粉到处跑,虽然还是会有粉掉出来,但比没有好。配方安全,无防腐剂无香料无矿物油未含珠光成分
缺点:粉质细到,定妆没多久,就被吹走的样子,干爽的感觉来得快走得也快。控油能力一般,粉体太细,吸收不了太多油脂,秋冬用比较适合。盖子和瓶子拧回去的时候,螺旋纹很难对准,经常因为对不准,散粉洒到到处都是。
CHACOTT 蜜粉
这罐蜜粉不是平价,而是白菜价,分量非常大。CHACOTT在日本是一个专业的品牌,经营各类芭蕾舞台用品,这款蜜粉也是舞台专用的,有不同妆效的,哑光、珠光、透明、肤色。
粉质:正常细,跟大牌一样细
妆效:透明,哑光,不好的是,会放大毛孔
优点:白菜价,分量大到我打翻了一次,到现在还没用完,性价比超级高!控油、防水、防汗能力确实强,不愧为舞台专用底妆啊~妆感非常干爽干净,一上脸就是雾面效果,凑近看都是磨皮的!可以反复补妆,因为它是透明的粉粒,不会让妆感看起来厚,也不会因为粉底液脱妆后不均匀,补蜜粉的时候,就会加重了不均匀的效果。
缺点:包装真的太不走心了,孔径超级无敌大,长期有一吨蜜粉停留在上层,沾取散粉的时候,容易沾取过多。没有配粉扑,明明有预留粉扑的位置,粉扑却要另外买,当时我买的时候不知道要另外配,就没有买,回来之后怎么样也配不到大小适合的粉扑。粉到处飞,因为孔径大,再加上没有粉扑堵住,如果把它放在包包里,包包里一定会洒满散粉,于是我只好把它放在工作室里,不敢往外带。对皮肤的纹理、毛孔修饰作用低,会放大毛孔、干纹,和一切皮肤不平整。
美宝莲 MASTER fix 蜜粉
这个超!推!荐!美宝莲这个MASTERfix好像没有在国内上,我自己是去纽约的时候买的。999美元,非常便宜!是MAKEUPFOREVER HD价格的三分之一,妆效不输大牌~我用第一次就被圈粉了,之后就再没碰过自己的MUF了。
粉质:很细很细很细!
妆效:一上脸,就像一层磨砂薄膜一样,既能修饰毛孔和纹理,又有美好的柔焦效果。
优点:粉扑太好用了,一个好的粉扑,它可以帮你把粉粒分散到最大的面积上,轻轻拍在脸上的时候,不会过多,也不会过少,刚刚好就是磨皮的效果。这个的手感真的很好,而且足够柔软,又有毛巾一样的毛毛,能抓住粉,不会一下就把所有的粉蹭到脸上。持久度,无敌,控油,哑光,一整天哦~要是补妆也很方便,拿个粉扑随便挥舞几下,又是一张干净的脸了。包装设计,平价里面妆感迷人,跟所有底妆产品都能配合得很好,气垫好,粉底好,从不打架,甚至一些过于油腻的气垫,用它定妆都能显现出美好的柔雾效果。
缺点:一个都没有
End of passion play, crumbling away
基督受难剧的结局,逐渐崩溃
I'm your source of self-destruction
我是你自杀的源头
Veins that pump with fear, sucking darkest clear
水泵恐惧地出现裂缝,裂缝正在吸收那最暗淡的清晰
Leading on your deaths construction
将你带入死亡地带
Taste me you will see
来吧,只要把我吃了你就会看到
More is all you need
我就是你想要的一切
You're dedicated to
你将会向全世界宣告
How I'm killing you
我是如何将你埋葬
Come crawling faster
赶快爬到他身边
Obey your Master
服从你的主人
Your life burns faster
你的命运就像是火的燃烧
Obey your Master
服从你的主人
Master
主人
Master of Puppets I'm pulling your strings
玩偶的主人啊,在幕后操作
Twisting your mind and smashing your dreams
碾碎你的欲望,毁灭的你的梦想
Blinded by me, you can't see a thing
是我让你致盲,让你生活于黑暗
Just call my name, `cause I'll hear you scream
叫我的名字吧,因为我想听到你的嘶吼
Master, master
主人,主人
Just call my name, `cause I'll hear you scream
叫我的名字吧,因为我想听到你的嘶吼
Master, master
主人,主人
Needlework the way, never you betray
用针线控制你的人生,从不给你背叛的契机
life of death becoming clearer
死亡线变得越来越清晰
Pain monopoly, ritual misery
试图将痛苦垄断,却照样还是痛苦
Chop your breakfast on a mirror
就像在镜子前碾碎你所有的粮食
Taste me you will see
来吧,只要把我吃了你就会看到
More is all you need
我就是你想要的一切
You're dedicated to
你将会向全世界宣告
How I'm killing you
我是如何将你埋葬
Come crawling faster
赶快爬到他身边
Obey your Master
服从你的主人
Your life burns faster
你的命运就像是火的燃烧
Obey your Master
服从你的主人
Master
主人
Master of Puppets I'm pulling your strings
玩偶的主人啊,在幕后操作
Twisting your mind and smashing your dreams
碾碎你的欲望,毁灭的你的梦想
Blinded by me, you can't see a thing
是我让你致盲,让你生活于黑暗
Just call my name, `cause I'll hear you scream
叫我的名字吧,因为我想听到你的嘶吼
Master, master
主人,主人
Just call my name, `cause I'll hear you scream 叫我的名字吧,因为我想听到你的嘶吼
Master, master
主人,主人
Master, Master, Where's the dreams that I've been after
主人啊主人,你知道我曾经追逐的梦想在哪吗?
Master, Master, You promised only lies
主人啊主人,你只对我说了个谎言啊
Laughter, Laughter, All I hear and see is laughter
笑声,笑声,我听到和看到的都只是笑声
Laughter, Laughter, laughing at my cries
笑声,笑声,他们这是在耻笑我的眼泪啊
Hell is worth all that, natural habitat
地狱的价值就在于,那是一个自然栖息地
Just a rhyme without a reason
仅仅是一种毫无理由毫不做作的自然
Never ending maze, drift on numbered days
从来不停止痛苦的寻觅,一直漂流在所剩无几的余生中。
Now your life is out of season
你现在的生活就是新赛季
I will occupy
我将占据你的肉体
I will help you die
我会帮你领悟死亡
I will run through you
我将穿透你的肉体
Now i rule you too
我将再一次统治你
Come crawling faster
赶快爬到他身边
Obey your Master
服从你的主人
Your life burns faster
你的命运就像是火的燃烧
Obey your Master
服从你的主人
Master
主人
Master of Puppets I'm pulling your strings
玩偶的主人啊,在幕后操作
Twisting your mind and smashing your dreams
碾碎你的欲望,毁灭的你的梦想
Blinded by me, you can't see a thing
是我让你致盲,让你生活于黑暗
Just call my name, `cause I'll hear you scream
叫我的名字吧,因为我想听到你的嘶吼
Master, master
主人,主人
Just call my name, `cause I'll hear you scream
叫我的名字吧,因为我想听到你的嘶吼
Master, master
主人,主人
如何利用git制作和提交patch
UNIX世界的软件开发大多都是协作式的,因此,Patch(补丁)是一个相当重要的东西,因为几乎所有的大型UNIX项目的普通贡献者,都是通过 Patch来提交代码的。作为最重要的开源项目之一,Linux,也是这样的。普通开发者从软件仓库clone下代码,然后写入代码,做一个Patch, 最后用E-mail发给Linux Kernel的维护者就好了。Git最初作为Linux的版本控制工具,提供了透明、完整、稳定的Patch功能。
我们先介绍一下Patch是什么。如果一个软件有了新版本,我们可以完整地下载新版本的代码进行编译安装。然而,像Linux Kernel这样的大型项目,代码即使压缩,也超过70MB,每次全新下载是有相当大的代价的。然而,每次更新变动的代码可能不超过1MB,因此,我们只 要能够有两个版本代码的diff的数据,应该就可以以极低的代价更新程序了。因此,Larry Wall开发了一个工具:patch。它可以根据一个diff文件进行版本更新。
不过在git中,我们没有必要直接使用diff和patch来做补丁,这样做既危险又麻烦。git提供了两种简单的patch方案。一是用git diff生成的标准patch,二是git format-patch生成的Git专用Patch。
1git diff生成的标准patch
我们可以首先用git diff制作一个patch。本文示例的工作目录里最初有一个文件a,内容是“This is the file a”,放置在master分支中。为了修改代码,我们一般的做法是建立一个新分支:
sweetdum@sweetdum-ASUS:~/GitEx$ git branch Fix
sweetdum@sweetdum-ASUS:~/GitEx$ git checkout Fix
Switched to branch 'Fix'
接下来我们在a文件里面追加一行,然后执行git diff。
sweetdum@sweetdum-ASUS:~/GitEx$ echo 'Fix!!!'>;>a
sweetdum@sweetdum-ASUS:~/GitEx$ git diff
diff --git a/a b/a
index 4add65f0d295ac 100644
--- a/a
+++ b/a
@@ -1 +1,2 @@
This is the file a
+Fix!!!
我们看到了Git diff的输出,这是一个非常典型的Patch式diff。这样我们可以直接把这个输出变为一个Patch:
sweetdum@sweetdum-ASUS:~/GitEx$ git commit -a -m "Fix"
[Fix b88c46b] Fix
1 files changed, 1 insertions(+), 0 deletions(-)
sweetdum@sweetdum-ASUS:~/GitEx$ git diff master > patch
sweetdum@sweetdum-ASUS:~/GitEx$ git checkout master
Switched to branch 'master'
我们现在有一个patch文件,并且签出了master,接下来我们可以使用git apply来应用这个patch。当然了,实际应用中,我们不会这样在一个分支建patch,到另一个分支去应用,因为只有merge一下就好了。我们现 在权当没有这个Fix分支。一般情况下,为了保护master,我们会建立一个专门处理新交来的patch的分支:
sweetdum@sweetdum-ASUS:~/GitEx$ git branch PATCH
sweetdum@sweetdum-ASUS:~/GitEx$ git checkout PATCH
Switched to branch 'PATCH'
sweetdum@sweetdum-ASUS:~/GitEx$ git apply patch
sweetdum@sweetdum-ASUS:~/GitEx$ git commit -a -m "Patch Apply"
[PATCH 9740af8] Patch Apply
1 files changed, 1 insertions(+), 0 deletions(-)
看,现在我们在PATCH分支中应用了这个补丁,我们可以把PATCH分支和Fix比对一下,结果肯定是什么也没有,说明PATCH分支和Fix分支完全一样。patch应用成功。即使有多个文件git diff 也能生成一个patch。
2git format-patch生成的git 专用补丁。
我们同样用上面那个例子的工作目录,这次,我们在Fix分支中的a添加了新行之后,用git format-patch生成一个patch。
sweetdum@sweetdum-ASUS:~/GitEx$ git checkout Fix
Switched to branch 'Fix'
sweetdum@sweetdum-ASUS:~/GitEx$ echo 'Fix!!!'>>a
sweetdum@sweetdum-ASUS:~/GitEx$ git commit -a -m "Fix1"
[Fix 6991743] Fix1
1 files changed, 1 insertions(+), 0 deletions(-)
sweetdum@sweetdum-ASUS:~/GitEx$ git format-patch -M master
0001-Fix1patch
git format-patch的-M选项表示这个patch要和那个分支比对。现在它生成了一个patch文件,我们看看那是什么:
sweetdum@sweetdum-ASUS:~/GitEx$ cat 0001-Fix1patch
From 6991743354857c9a6909a253e859e886165b0d90 Mon Sep 17 00:00:00 2001
From: Sweetdumplings <linmx0130@163com>
Date: Mon, 29 Aug 2011 14:06:12 +0800
Subject: [PATCH] Fix1
---
a | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/a b/a
index 4add65f0d295ac 100644
--- a/a
+++ b/a
@@ -1 +1,2 @@
This is the file a
+Fix!!!
--
1741
看,这次多了好多东西,不仅有diff的信息,还有提交者,时间等等,仔细一看你会发现,这是个E-mail的文件,你可以直接发送它!这种patch,我们要用git am来应用。
sweetdum@sweetdum-ASUS:~/GitEx$ git checkout master
Switched to branch 'master'
sweetdum@sweetdum-ASUS:~/GitEx$ git branch PATCH
sweetdum@sweetdum-ASUS:~/GitEx$ git checkout PATCH
sweetdum@sweetdum-ASUS:~/GitEx$ git am 0001-Fix1patch
Applying: Fix1
sweetdum@sweetdum-ASUS:~/GitEx$ git commit -a -m "PATCH apply"
在提交了补丁之后,我们可以再看看目前文件a的情况:
sweetdum@sweetdum-ASUS:~/GitEx$ cat a
This is the file a
Fix!!!
果然,多了一个Fix!!!
不过要注意的是,如果master与Fix分支中间有多次提交,它会针对每次提交生成一个patch。
提交补丁到邮件列表:
sweetdum@sweetdum-ASUS:~/GitEx$ git send-email --to <maintainer's email> --cc <mailing list> <your patch>
注意:git send-email在很多机器上没有默认安装,需要进行手动安装
总结一下,利用git format-patch制作补丁大概有以下步骤:1)新建分支 2)在新建的分支上进行相关修改 3)提交修改到本地数据库 4)针对上一个支生成补丁5)另外新建分支,验证补丁6)提交补丁到邮件列表
3两种patch 的比较:
兼容性:很明显,git diff生成的Patch兼容性强。如果你在修改的代码的官方版本库不是Git管理的版本库,那么你必须使用git diff生成的patch才能让你的代码被项目的维护人接受。
除错功能:对于git diff生成的patch,你可以用git apply --check 查看补丁是否能够干净顺利地应用到当前分支中;如果git format-patch 生成的补丁不能打到当前分支,git am会给出提示,并协助你完成打补丁工作,你也可以使用git am -3进行三方合并,详细的做法可以参考git手册或者《Progit》。从这一点上看,两者除错功能都很强。
版本库信息:由于git format-patch生成的补丁中含有这个补丁开发者的名字,因此在应用补丁时,这个名字会被记录进版本库,显然,这样做是恰当的。因此,目前使用Git的开源社区往往建议大家使用format-patch生成补丁。
转载仅供参考,版权属于原作者。祝你愉快,哦
欢迎分享,转载请注明来源:品搜搜测评网