捷豹XF榮獲金方向盤 “最佳轎車”獎

捷豹XF第二代捷豹XF於今年年初發布,提供多種動力系統供消費者選擇,其中包括兩款6缸發動機和多款全新Ingenium系列4缸柴油發動機。其中,163馬力2。0升柴油發動機的二氧化碳排放量僅為104克/公里。搭載380馬力3。0升6缸汽油發動機的車型最高速度可達155英里/小時。
本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

※別再煩惱如何寫文案,掌握八大原則!

一切明知是山寨車還要去買的行為都是耍流氓!

而如今的比亞迪相信大家都知道了,完成了銷量和收入的目標后,老王開始一門心思玩起新能源汽車,倒也做的有聲有色。其它還有不少這樣的例子,就不一一列舉。說了這麼多,叫獸倒並沒有吐槽或者貶低奇瑞、比亞迪等品牌的意思,可以說除了“汽車發明者”奔馳以外,沒有哪個品牌敢保證自己從來沒有模仿和借鑒過。

當大家這幾天的精力都在籌備廣州車展的時候,殊不知咱們大眾泰的又一款“神車”上市了。沒錯,就是之前一直吵吵的眾泰版“保時捷” – SR9,新車售價10.88 – 16.18萬元。

這回,眾泰真的圓了廣大搬磚狗們的“豪車夢”。

好了,說笑歸說笑,叫獸今天在這裏想很認真很嚴肅的討論下一個問題。眾泰、陸風等其它某些自主品牌還在明目張膽走抄襲的這條路(我都不好意思稱其為山寨,更不敢說所謂的逆向研發),他們出品的車,你真的敢買嗎?就算敢,你真的會去買嗎?

先從“山寨”這事聊起。

印象里“山寨”這個詞,是從汽車行業傳出去並開始“發揚光大”的。早期年間的中國品牌幾乎都走過山寨這條路(這裏尤其是民營品牌為多,國有品牌則更輕鬆,直接“拿來主義”就好)。

當年走入尋常百姓家的奇瑞QQ,十幾年前的馬路上到處都有它的身影。在那個國人對汽車認知度遠遠不夠的年代,路上也沒有像今天這樣的老年代步車,奇瑞QQ憑藉低廉的價格和討喜的造型迅速走俏。要知道在那個年代能開上一台私家車對於一個普通家庭來說已經是件非常值得炫耀的事情了。

殊不知奇瑞QQ其實是模仿的雪佛蘭Spark,也就是樂馳。

山寨車奇瑞QQ的銷量全面超越了原版車樂馳,從此奇瑞成了家喻戶曉中國汽車品牌,而彼時的通用一定對這個突然闖進來的“毛頭小子”恨得咬牙切齒。

隨着奇瑞QQ的成功,奇瑞完成了最原始的積累(品牌、人員、財力),隨後推出的瑞虎SUV再獲成功,成為了最早一批進軍SUV市場的中國品牌。

然鵝,瑞虎其實是模仿當年那個背着“小書包”的豐田RAV4。

還有一個比較典型的就是比亞迪。大家都知道比亞迪靠電池起家,收購西安秦川汽車后開始獵足汽車產業。比亞迪汽車的成立,正好趕上了中國汽車產業發展的井噴時期,憑藉F3一炮而紅。F3的成功,也為今後比亞迪汽車的發展奠定了基礎。

毫不誇張的說,比亞迪F3幾乎是完全山寨豐田花冠的一款車(當年比亞迪的工程師曾跟我說,可以直接將花冠的車門裝到F3身上)。

與奇瑞的路數很相近,F3之後,比亞迪又趕上了國內的SUV熱潮,憑藉一款山寨雷克薩斯RX而來的S6又成功了爭奪了一部分SUV市場。而如今的比亞迪相信大家都知道了,完成了銷量和收入的目標后,老王開始一門心思玩起新能源汽車,倒也做的有聲有色。

其它還有不少這樣的例子,就不一一列舉。

說了這麼多,叫獸倒並沒有吐槽或者貶低奇瑞、比亞迪等品牌的意思,可以說除了“汽車發明者”奔馳以外,沒有哪個品牌敢保證自己從來沒有模仿和借鑒過。從紡織廠里走出來的豐田,最早期也是靠逆向雪佛蘭和奧迪等車型起步,可人家經過自身多年的積累和努力,如今早已成為世人皆知的一流汽車品牌。

反觀咱們國內目前的主流中國品牌,奇瑞經歷了近20年的發展(1997年1月8號成立),通過一系列車型完成了原始積累以後,尹同躍意識到了自主研發的重要性,於是推出了完全靠奇瑞正向研發的艾瑞澤系列。先不論其市場表現如何,起碼可以看出奇瑞對自我研發的態度和決心。

皇天不負有心人,經過艾瑞澤幾年經驗的積累,如今艾瑞澤系列車型獲得了市場和消費者的認可,這對奇瑞的品牌口碑和銷量的提升都起到了至關重要的幫助。再看看前不久上市的瑞虎7,同樣是一片叫好聲。此時此刻的老尹,也算是苦盡甘來。

比亞迪則正如前面所說,老王現在一心都在搞他的新能源戰略。從比亞迪“542”戰略(5秒破百、電力四驅、百公里2L油耗)開展以來,旗下的秦、唐等新能源車都取得了非常可觀的銷量。縱觀國際汽車市場,比亞迪的新能源技術的確挺有一套,新能源已經成為了比亞迪最重要的標籤。聽說老王終於決心要搞好設計了,已經聘請到奧迪前總設計師艾格來主導比亞迪今後的設計,的確挺令人期待的。

還有諸如長城“哈弗”系列、吉利“3.0”系列、廣汽傳祺等等品牌都已經走在了自主研發這條光明大道上。

話已至此,叫獸只想問一句:成立了13年的眾泰和12年的陸風,真的還有臉再毫無下限的赤裸裸的剽竊(注意措詞)下去嗎?

誠然,靠山寨能博得一時的關注和銷量,但長此以往,對品牌形象的損害是無法修復的。如今的眾泰早已淪為了無數人調侃的對象,甚至已經成為了山寨車的代名詞。還有一點,在信息如此發達的今天,消費者們再也不是十幾年前對汽車一無所知的“小白”了。試問誰願意開台車出去讓人在背後戳脊梁骨呢?

在這裏插播一句,山寨車的鼻祖品牌 – 雙環汽車就在今年被工信部除名,取消了它的生產資質。

在商言商本沒有錯,錯的是這些企業到如今還在毫無下限的拉低國人底線。人要臉,樹要皮,你有你選擇的權利,而我自然也有我吐槽的權利:“今天的山寨車將會是抹黑整个中國品牌的毒瘤!一切明知是山寨車還要買的行為都是耍流氓!”本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

※回頭車貨運收費標準

網頁設計最專業,超強功能平台可客製化

※別再煩惱如何寫文案,掌握八大原則!

這個30萬的車都才有的配置 這幾款15萬SUV竟然都有?

88萬提起漢騰這個名字大家還是比較陌生的,但是初見漢騰X7有着很熟悉的感覺,看起來很順眼,前臉設計十分大氣,分上中下三層的進氣格柵凸顯了車頭的層次感,側麵線條簡約而硬朗,黑色包圍套件和雙邊雙出的排氣管設計彰顯SUV硬派氣息。

其實一開始這種系統是應用在戰鬥機上面的显示系統,因為飛行員在飛行中需要經常交替觀察艙內儀錶和艙外的環境,要不斷改變眼睛焦距容易產出視覺中段,所以發明了這個通過光學部件投射到前方組合玻璃显示裝置上,更方便一邊飛行一邊觀察數據,現在隨着科技的發展,已經應用在許多高端轎車上。

今天小編就給大家說說汽車上的抬頭显示系統,它可以把一些重要的行車信息如車速、油耗等信息映射到一片玻璃上面,駕駛人員即使不用低頭也能對行車數據了如指掌,提高駕駛者的行車安全性。

而一些更高端的車型上還可以显示導航信息、道路狀況等信息,非常的方便實用,今天我們一起來看一下哪些國產車中都配備了抬頭显示系統的。

瑞虎7 2016款 1.5T 自動耀尊版

廠商指導價:15.39萬

瑞虎7是奇瑞旗下的旗艦車型,體現了奇瑞的最高造車水準,新車基於奇瑞TX概念車打造,外觀設計時尚精緻,凌厲的腰線、充滿力量感的造型、18寸的大輪轂,原創度很高,三叉戟式大燈造型別緻,看上去更加年輕動感。

和年輕時尚的外觀相互呼應,內飾設計也充滿個性化,黑橙雙色搭配的內飾挑起了視覺上的衝擊,整體很簡潔流暢,主要操作在中控屏上都能實現,液晶儀錶盤、前排座椅加熱/通風/按摩、轉向輔助燈、發動機啟停、併線輔助等配置簡直就是跨級別的享受。

瑞虎7的軸距2670mm,屬於中規中矩的尺寸類型,但實際體驗中乘坐感受同級別來說還是挺出色的,皮質包裹的座椅包裹性好,肩部支撐很到位,提供了1.5T+6擋手動/6擋雙離合的動力組合(加速能力較強),或者2.0L+CVT的動力組合(平順性、性價比方面有優勢),採用四連桿獨立后懸架,底盤質感好,有歐系車的風格。

點評:無論是外觀設計,還是內飾配置,瑞虎7都是極具性價比的一款車,優越的駕駛質感和良好的賣相,上市后就取得了不錯的銷量,看來很符合國人的用車需求。

漢騰X7 2016款 2.0T 自動御馬版

廠商指導價:14.88萬

提起漢騰這個名字大家還是比較陌生的,但是初見漢騰X7有着很熟悉的感覺,看起來很順眼,前臉設計十分大氣,分上中下三層的進氣格柵凸顯了車頭的層次感,側麵線條簡約而硬朗,黑色包圍套件和雙邊雙出的排氣管設計彰顯SUV硬派氣息。

內飾的設計是不是也很眼熟,像不像某德系豪華品牌,不過其用料和質感還是挺不錯的,門板上也採用了皮質材料和雙縫線的設計,很上檔次,而配置上HUD抬頭显示、360度全景影像、電動尾門、电子手剎和自動駐車等高端配置都齊全,性價比很高。

漢騰X7的長*寬*高為4671*1902*1697mm,軸距達到了2810mm,乘坐空間和儲物空間都是非常寬裕的,而後排座椅放倒後幾乎全平的地台擴展性很強,動力提供1.5T+5擋手動或者2.0T+6擋雙離合的組合,后多連桿帶穩定桿的獨立懸挂調校很有德系車的感覺,路感清晰又帶有韌性。

點評:漢騰X7上市后的競爭對手眾多,入哈弗H6、長安CS75等,豐富的配置和較為寬敞的空間是它的優勢,但品牌認知度還較低,至於質量如何,還有待時間的檢驗。

優6 SUV 2017款 1.8T 智尊型

廠商指導價:16.98萬

優6的外觀走的是那種時尚亮麗的設計風格,家族式的前臉擺脫了大7SUV一貫的圓潤的風格,變得更加犀利有神,進氣格柵大量使用條狀鍍鉻飾條,視覺效果不錯,相對低矮的車身加上流暢的車頂線條,看上去很有跨界車的感覺。

內飾採用了環抱式的設計,中控台和門板的連接完美融合,用料上雖然是不怎麼厚道,但是細節部分做得比較好,一些地方被用上了仿碳纖維的裝飾,非常動感,方向盤換擋、全景攝像頭、电子駐車、無鑰匙進入/啟動等配置一應俱全。

優6的長*寬*高為4625*1825*1620mm,軸距為2720mm,由於車身較為低矮,坐姿相對較高,頭部空間比較一般,而腿部空間還是不錯的,2017款全系標配1.8T+6擋手自一體變速器,發動機表現令人滿意,動力響應靈敏,換擋較為平順,整車隔音比較好,開起來很安靜。

點評:新款優6多方面都有明確改善,特別更換了變速箱,對平順性和燃油經濟性都有一定提升,而一向主打配置的納智捷在車載系統上仍有可優化的空間,在價格上應該多些優惠政策,才能在眾多品牌中佔有優勢。

注:部分車型圖片欠缺,會用其他車型圖片代替。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

※別再煩惱如何寫文案,掌握八大原則!

10萬的車座椅如沙發般舒服又省油 車主卻一直吐槽?

雙區自動空調操作起來很簡便,不會太難用。整車隔音還是可以的,在100km/h時依舊很安靜,只有上到120km/h時,才會有種hold不住的感覺。配置很高,帶有很多安全配置,例如併線輔助,車道偏離預警和主動剎車。油耗很低,走了170多公里的高速,表顯油耗在5。

前言

一直以來,騏達都以經濟舒適范來示人。然而,自從改款以後,外形變得更加運動。至於其他方面有什麼變化,我們不妨來聽聽車主們是怎麼說的。

東風日產-騏達

指導價:9.99-13.49萬

車主:傷心1999

購買車型:2016款 1.6L CVT酷動版

裸車購買價:11.3萬

最滿意的點:座椅很柔軟舒適,就像家裡的沙發一樣,坐姿也很舒服。前擋風玻璃視線很好,空間也很寬敞。車內噪音比較少,走高速時也挺安靜的。方向也很好打,做工也夠精良,CVT變速箱匹配平順,沒有頓挫,不會讓人有一點點的不適。還有最重要的一點就是省油。

最不滿意的點:日間行車燈在霧燈的位置,不太喜歡。後排凸起有點高,影響中間人員的乘坐感受。同時,酷動版中間沒有頭枕。中央扶手箱偏短,放手不太好放。懸挂偏硬,這點與老騏達不太一樣,過爛路時後排有點顛。雨刮並非無骨雨刮,影響視覺感受。大燈亮度偏低,晚上行車不太容易看。

目前行駛里程:目前已經走了2200公里,走了高速加市區加鄉間公路,綜合油耗在6.8L/100km左右,很滿意。

車主:圖圖

購買車型:2016款 1.6L CVT智享版

裸車購買價:13.2萬

最滿意的點:空間無敵,前排調到正常位置時,後排翹個二郎腿完全沒壓力,只是犧牲了後備廂空間。雙區自動空調操作起來很簡便,不會太難用。

整車隔音還是可以的,在100km/h時依舊很安靜,只有上到120km/h時,才會有種hold不住的感覺。配置很高,帶有很多安全配置,例如併線輔助,車道偏離預警和主動剎車。油耗很低,走了170多公里的高速,表顯油耗在5.1L/100km,真省。

最不滿意的點:只有主駕駛位的玻璃有一鍵升降,而且沒有燈,晚上就全憑手摸。車鑰匙和一鍵啟動的按鈕看起來很廉價。

目前行駛里程:現在已經開了2100公里,本人開車比較溫柔,所以綜合油耗在7.5L/100km左右。

車主:溜達溜達

購買車型:2016款 1.6L CVT智行版

裸車購買價:11.9萬

最滿意的點:外形年輕有運動范,內飾也挺精緻。動力雖然不算猛,但也足夠在市區很好地遊走。日產沙發廠果然名不虛傳,坐起來相當舒適。輪轂樣式很漂亮。各種安全配置齊全好用,盲區輔助也感應得很好。

最不滿意的點:日間行車燈在霧燈附近,容易讓人誤會。大燈亮度不夠。一鍵啟動按鈕放方向盤後部不太習慣,點煙器在中控台下方也不夠人性化。扶手箱位置設置得不太合理,手套箱感覺沒什麼阻尼,很廉價。多媒體系統並不支持視頻播放。

目前行駛里程:目前開了800公里,平均油耗在8L/100km左右。

編者總結:

騏達依舊是一款居家使用的好車型,只是在這個基礎上,又讓駕駛員多了一點點操控的私心而已。配備了那麼多安全性配置,開着就足夠讓人放心。不過,作為一台日系車,後排有凸起,這似乎有點說不過去。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

※回頭車貨運收費標準

網頁設計最專業,超強功能平台可客製化

※別再煩惱如何寫文案,掌握八大原則!

哪些年,我們玩過的Git

作者:玩世不恭的Coder
公眾號:玩世不恭的Coder
時間:2020-06-05
說明:本文為原創文章,未經允許不可轉載,轉載前請聯繫作者

哪些年,我們玩過的Git

前言一、前期工作常用基本概念的理解Git環境的搭建用戶名和郵箱的配置二、Git的理論基礎工作區域工作流程版本庫的初始化文件的四種狀態Git的初步操作三、關於文件的各種操作文件修改之後版本的回退撤銷修改文件的刪除四、本地項目遠程提交到Github倉庫五、Git的分支管理分支的創建與合併單人分支合併時的衝突解決多人協作下的衝突解決六、標籤管理總結參考資料

前言

關於Git,相信每一位該領域的朋友都了解其的強大。Git是一種廣受歡迎的代碼管理工具,在實際開發中,我們可以通過Git和團隊更好管理我們的項目版本,也大大提高了團隊的開發效率。在實際使用Git的過程中,我們一般只需要掌握其中的十幾條命令就夠用了,Taoye之前對Git也只是停留在會用的狀態,而由於對Git內部的一些細節平時接觸比較少,所以還是會有一點盲區存在。所以,乘着考研結束的這段空閑時間,對之前學習過的Git做一個整理,一方面分享給各位讀者,另一方面也方便自己日後的複習。本文主要介紹了在實際開發過程中所常用的一些Git操作,由於博主技術水平有限,在內容上的表述難免會有疏忽和遺漏,也懇請各位Coder多多指教。

一、前期工作

常用基本概念的理解

  • 版本控制

所謂的版本控制是指對軟件開發過程中各種程序代碼、配置文件及說明文檔等文件變更的管理,是軟件配置管理的核心思想之一。簡單的講,就是方便我們對項目代碼的各種版本進行管理。

我們可以舉個例子來進行說明一下:相信每一位學生,無論是大學畢業或是研究生畢業,都避免不了完成一篇學術性的論文。我們都知道,學術性論文的撰寫都是一個長期的過程,在這個過程也會經歷不斷地反覆修改,這樣就會產生多個論文版本。相信每一位有過此經歷的同學都會感到痛苦,版本多了甚至都不知道每一個版本的論文內容都修改了啥。而我們的Git就能夠很好的管理各種版本的論文,在每一次提交的時候,都可以在comment中記錄我們對論文的修改內容,並且每一個版本的論文都可以進行回滾等操作,也就是隨意的切換各種版本。如此一來,豈不快哉???

此外,我們還可以使用廖大大提到的例子來解釋一下:在許多遊戲中,都會有一個存檔的操作,如果你對接下來的挑戰Boss沒有足夠的信心,就可以進行一次存檔,當我們的角色因為挑戰Boss而喪命,我們就可以讀取其中的存檔而從當前狀態繼續遊戲,而不需要從頭再來,假如遊戲有保存多個存檔的操作,我們還可以讀取不同的存檔來繼續遊戲。同樣地,在我們對文件進行修改到一定程度的時候,就可以保存一個“快照”,一旦我們對自己的操作的不滿意,就可以進行恢復或是回滾操作,這樣就可以“穿梭”到操作之前狀態繼續工作,而無需從頭再來。

  • 工作區(Working Directory)

可以理解成就是電腦本地磁盤的目錄,比如我們在本地創建了一個temp目錄,那這個目錄就叫做工作區。

  • 暫存區(Staging area)

一般存放在”git目錄”下的index文件(.git/index)中,所以我們把暫存區有時也叫作索引(index)。

  • 版本庫(Repository)

我們的工作區有個隱藏目錄.git,它就是Git的本地版本庫。

對於以上部分概念,有些讀者可能不是很了解,大家可以閱讀下面內容之後再回過頭來進行推敲,相信大家一定會有更加透徹的理解。

Git環境的搭建

對於Git的安裝,在前面我們講解Hexo搭建博客的時候有介紹過,這裏我們再簡單的回顧一下。

你可在git官網中根據自己的需要進行下載:https://git-scm.com/。打開之後你將看到如下內容,就無腦download for Windows

將其下載到指定的磁盤,然後Windows系統下傻瓜式安裝即可。安裝好后我們打開cmd終端(win+r -> 輸入cmd -> 回車),執行git --version,若出現git version 2.19.2.windows.1之類的版本輸出,那麼恭喜你已經成功安裝Git。

對於Linux操作系統下,我們可以直接通過命令的形式來進行安裝:

1# Linux下安裝Git
2sudo apt-get install git

用戶名和郵箱的配置

我們在安裝完成Git之後,首先第一步要做的就是配置Git的用戶名和郵箱,這個是提交項目的用戶的唯一標識。

1# 配置用戶名和郵箱,配置好之後會寫入C:\Users\M的.gitfig文件中
2git config --global user.name "username"
3git config --global user.email "email@qq.com"

global說明:global代表全局的意思,也就是說我們在之後提交的每一個項目採用的都是該用戶名和郵箱。假如我們需要在不同的項目中使用不同的用戶名和郵箱,我們則不需要添加–global參數。

我們將此信息配置好之後,就會寫入C:\Users\M中的,gitfig文件中。此外,我們也可以用過以下命令來查詢我們所配置的用戶名和郵箱:

1# 查詢配置
2git config -l

二、Git的理論基礎

該部分的內容來自:https://www.cnblogs.com/best/p/7474442.html

工作區域

Git本地有三個工作區域:工作目錄(Working Directory)、暫存區(Stage/Index)、資源庫(Repository或Git Directory)。如果在加上遠程的git倉庫(Remote Directory)就可以分為四個工作區域。文件在這四個區域之間的轉換關係如下:

  • Workspace:工作區,就是你平時存放項目代碼的地方
  • Index / Stage:暫存區,用於臨時存放你的改動,事實上它只是一個文件,保存即將提交到文件列表信息
  • Repository:倉庫區(或本地倉庫),就是安全存放數據的位置,這裏面有你提交到所有版本的數據。其中HEAD指向最新放入倉庫的版本
  • Remote:遠程倉庫,託管代碼的服務器,可以簡單的認為是你項目組中的一台電腦用於遠程數據交換

本地的三個區域確切的說應該是git倉庫中HEAD指向的版本

  • Directory:使用Git管理的一個目錄,也就是一個倉庫,包含我們的工作空間和Git的管理空間。
  • WorkSpace:需要通過Git進行版本控制的目錄和文件,這些目錄和文件組成了工作空間。
  • .git:存放Git管理信息的目錄,初始化倉庫的時候自動創建。
  • Index/Stage:暫存區,或者叫待提交更新區,在提交進入repo之前,我們可以把所有的更新放在暫存區。
  • Local Repo:本地倉庫,一個存放在本地的版本庫;HEAD會只是當前的開發分支(branch)。
  • Stash:隱藏,是一個工作狀態保存棧,用於保存/恢復WorkSpace中的臨時狀態。

工作流程

git的工作流程一般是這樣的:

1. 在工作目錄中添加、修改文件;

2. 將需要進行版本管理的文件放入暫存區域;

3. 將暫存區域的文件提交到git倉庫。

因此,git管理的文件有三種狀態:已修改(modified),已暫存(staged),已提交(committed)

版本庫的初始化

我們需要創建一個目錄來作為我們的項目根目錄,進入到該目錄之後,右鍵git bash來啟動git的操作窗口

1# 選擇對應的目錄,右鍵點擊git bash,然後創建一個目標項目目錄,並進入該目錄
2mkdir temp_project
3cd temp_project

之後,我們需要將創建的目錄初始化為Git所能識別倉庫,可以通過git init來實現。初始化完成之後,就會在該目錄中自動創建出一個.git的隱藏目錄,關於我們項目的版本信息都會存儲在該目錄當中。

1# 初始化一個倉庫,之後會多出.git隱藏文件
2git init

以上就是我們自定義一個倉庫的過程。此外,我們還可以基於已經存在Git倉庫來進行操作,在Github中查找自己想要的Git倉庫,複製其鏈接,然後通過git clone來對該倉庫進行克隆,從而將該倉庫下載到我們的本地目錄中:

1# 使用clone克隆Github中已經存在的倉庫
2git clone XXXXXX.git

文件的四種狀態

我們要對文件的版本進行控制,首先需要明白當前文件處於什麼樣的狀態,對於不同狀態下的文件,我們可以進行不同的操作。而在Git中,文件主要是有四種狀態:

  • Untracked: 未跟蹤, 此文件在文件夾中, 但並沒有加入到git庫, 不參与版本控制. 通過git add 狀態變為Staged.
  • Unmodify: 文件已經入庫, 未修改, 即版本庫中的文件快照內容與文件夾中完全一致. 這種類型的文件有兩種去處, 如果它被修改, 而變為Modified. 如果使用git rm移出版本庫, 則成為Untracked文件
  • Modified: 文件已修改, 僅僅是修改, 並沒有進行其他的操作. 這個文件也有兩個去處, 通過git add可進入暫存staged狀態, 使用git checkout 則丟棄修改過, 返回到unmodify狀態, 這個git checkout即從庫中取出文件, 覆蓋當前修改
  • Staged: 暫存狀態. 執行git commit則將修改同步到庫中, 這時庫中的文件和本地文件又變為一致, 文件為Unmodify狀態. 執行git reset HEAD filename取消暫存, 文件狀態為Modified

Git的初步操作

了解了文件的狀態之後,我們不妨模擬一個關於論文的例子來初步了解下版本庫以及文件的簡單操作:

  • 創建一個工作區,並進行初始化
1# 創建一個工作區
2mkdir my_dir
3# 進入工作區
4cd my_dir
5# 通過init命令將工作區轉化成Git可以管理的倉庫
6git init
7# 在該倉庫中創建一個paper.txt,用於編寫我們的論文
8touch paper.txt
  • 我們在paper.txt之中編輯如下內容:
1# 我們在`paper.txt`之中編輯如下內容:
2Oh, my god, I will write my graduate paper.
3Come on, Taoye.
  • 通過add命令將paper.txt文件添加到暫存區
1# 通過add命令將paper.txt文件添加到暫存區
2$ git add paper.txt
  • 通過commit命令將暫存區中的內容提交到倉庫
1# 通過commit命令將暫存區中的內容提交到倉庫,指定提交paper.txt文件
2$ git commit -m "start writing my paper" paper.txt
3
4# 對工作區中的文件統一提交至暫存區
5$ git commit -m "XXXXXXXXXXX"

使用commit命令之後,就能將我們暫存區中的內容提交至倉庫中,其中的-m參數表示的是提交說明,用於解釋說明本次提價的內容。提交完成之後,我們可以在Git中通過git status來查看文件的狀態:

1# 查看指定文件的狀態
2git status paper.txt
3# 查看所有文件的狀態
4git status

以上操作過程如下圖所示:

三、關於文件的各種操作

文件修改之後

在上節中,我們已經介紹了文件的四種狀態,並且以關於論文的例子來初步了解了版本庫以及文件庫的簡單操作。

假設現在論文指導老師對Taoye提出了要求:“Taoye同學,時間來不及了,你今天必須給我完成論文的摘要部分!!!否則,後果自負!!!”

“Excuse me?今天?我遊戲打得正嗨呢。面對老師如此強硬的要求,沒辦法了,只能暫停上王者的上分階段了,開始剛論文。”對此,Taoye進行了一個騷氣的三下五除二操作,廣泛的涉獵各種優秀的學者文獻並進行構思,迅速開寫paper.txt中的摘要部分,完成之後的內容如下所示:

1Oh, my god, I will write my graduate paper.
2Come on, Taoye!
3
4I have finished the summary today!

之後,我們再通過git status命令來查看一下該論文文件的狀態:

1$ git status paper.txt
2On branch master
3Changes not staged for commit:
4  (use "git add <file>..." to update what will be committed)
5  (use "git checkout -- <file>..." to discard changes in working directory)
6
7        modified:   paper.txt
8
9no changes added to commit (use "git add" and/or "git commit -a")

此時,我們可以發現工作區中的內容發生了修改,並且與我們上一次提交后版本庫中的內容不一致,這個時候,Git就會提醒我們需要再次進行add、commit操作來將修改后的文件添加並提交至版本庫。另外,我們也可以使用diff命令來查看據上次提交所修改的內容:

1# 查看據上次提交所修改的內容
2git diff paper.txt

當確認文件修改的內容無誤之後,我們就可以使用add、commit操作來提交我們的文件到版本庫中:

1# 添加至暫存區
2git add paper.txt
3# 提交至版本庫
4git commit -m "finished the summary" paper.txt
5# 查看狀態
6git status paper.txt

OK,Taoye從白天剛到深夜。如次一來,總算是完成了老師給的要求,興奮的將內容提交給老師審閱,然後又繼續打王者了。

版本的回退

Taoye連續打了12h的遊戲,有點累了。重新打開自己完美的論文欣賞一下,卻突然發現有幾個錯別字,這種低級錯誤實屬不應該出現啊。思慮半刻,Taoye修改之後,再次add commit就完事了:

paper.txt修改之後的內容:

1Oh, my god, I will write my graduate paper.
2Come on, Taoye!
3
4I have finished the summary today!
5Some typos have been fixed.

再次add、commit操作:

1git add paper.txt
2git commit -m "fixed the typos" paper.txt

也就是說,現在我們論文總共是有三個版本,分別是:初始化的論文、完成摘要的論文、修改錯別字后的論文。我們可以通過log命令來查看各種版本的論文文件:

1# 显示各種版本文件的詳細信息
2$ git log paper.txt
3# 通過一行簡單显示文件的信息
4$ git log --pretty=oneline paper.txt
5d7938315aa0f4a4d40c6a94a10ab8db25b50e23b (HEAD -> master) fixed the typos
6454cc579f0fe51fdfd97132384a9c5fcaa1993c2 finished the summary
7dc1dcd9501dec52e6160ce98bb5c118abb805289 start writing my paper

從以上log的輸出信息,我們可以知道所提交文件的所有歷史記錄,其中記錄了提交時間、提交作者(郵箱)、提交說明(-m)等信息。並且如果我們仔細一看,會發現每一個版本的文件都會對應一個commit id,這個id其實就相當於每一個版本的唯一標識。比如,從上面的輸出結果,我們可以得到第一個版本的commit id = dc1dcd9501dec52e6160ce98bb5c118abb805289,而這個commit id的作用就是方便我們日後自由“穿梭”到各個版本(就是一種穿越時空的意思)。

Taoye的論文指導老師審閱了摘要內容之後,正言厲色的說道:“你這寫的啥玩意兒?牛頭不對馬嘴,而且居然還有錯別字?”

沒辦法了,Taoye只能虛心接受老師的批評,再次苦逼的修改論文了。

我們現在論文是版本三,有沒有一種快速有效的方法回退到版本一呢???在Git中,我們可以通過git reset --hard來實現這個需求,也就是版本的回退。版本的回退可以用兩種形式,一種是通過HEAD來基於當前版本進行回退,另一種是通過commit id來回退到指定的版本,其用法如下所示:

1# HEAD表示的是當前版本,可以通過HEAD^回退到上一個版本
2git reset --hard HEAD^
3git reset --hard HEAD^^     # 回退到上上版本,回退到多少個版本之前就使用多少個^
4git reset --hard HEAD~50    # 回退到50個版本之前
5
6# 指定commit id來進行版本回退
7git reset --hard dc1dcd

值得注意的是,我們通過指定id來進行版本回退的時候,由於id過長,我們沒必要全寫,只需要傳入前幾個字符保證id的唯一性即可。有使用過Docker的朋友,應該會熟悉,我們在指定容器的時候,也是類似的操作。

下面Taoye版本三的論文迅速回退到版本一,騷操作如下:

1$ git reset --hard dc1dcd
2$ cat paper.txt
3Oh, my god, I will write my graduate paper.
4Come on, Taoye.

關於版本穿梭的簡單解釋:其實,在Git中,有個HEAD指針用於指向當前版本,當我們進行版本回退的時候,其實就是改變HEAD的指向,指向對應的版本也就實現了版本的回退。這有點類似於數據結構中鏈表的操作。

此外,我們還可以通過git reflog來查看當前版本文件的變換:

1$ git reflog paper.txt
2dc1dcd9 HEAD@{1}: reset: moving to dc1dcd                       # 版本的回退(回退到版本一)
3d793831 (HEAD -> master) HEAD@{2}: commit: fixed the typos      # 第三次提交(版本三)
4454cc57 HEAD@{3}: commit: finished the summary                  # 第二次提交(版本二)
5dc1dcd9 HEAD@{4}: commit (initial): start writing my paper      # 第一次提交(版本一)

撤銷修改

假設Taoye在寫論文的時候,每天都在不斷地修修改改,心裏面非常的煩躁,很不是滋味。於是乎,在paper.txt中添加如下一句話:

1I don't like my tutor, he often criticizes me.

然而,在打算提交的時候,想了想還是有點不太妥,要是因為這麼一句話,最終導致無法畢業那就完蛋了。對此,我們在對文件commit之前使用’git status paper.txt’命令發現,可以通過checkout --來進行修改撤銷,撤銷至修之前的狀態,操作如下:

1$ git checkout -- paper.txt
2$ cat paper.txt     # 執行之後,可以發現已經撤銷到無最後一句的狀態

以上是發生在我們對工作區中的文件進行修改,但是還沒有執行git add操作,將工作區中的paper.txt添加至暫存區中的場景,已達到撤銷至修改之前的狀態。假設我們在對paper.txt修改之後,再執行git add paper.txt命令將文件添加至暫存區,那麼我們該怎樣撤銷呢?按照思路,我們可以先通過git reset HEAD將暫存區中的內容撤銷掉放回工作區,然後撤銷工作區即可實現需求,對此,有如下操作:

1# 將暫存區中的內容撤銷掉放回工作區
2git reset HEAD paper.txt
3# 撤銷工作區修改的內容
4git checkout -- paper.txt

如此一來,就完美的將I don't like my tutor, he often criticizes me.撤銷掉,Taoye也就能順利畢業了。關於撤銷,要記得與版本回退區分開來,撤銷是我們在對文件進行修改但是還沒有進行commit的時候發生的,而版本回退是在執行了commit提交操作之後發生的。

文件的刪除

在上面的內容中,我們已經詳細的介紹了關於文件的修改、版本回退、撤銷等操作,下面我們來講講文件在刪除之後應該會出現哪些操作。

假設現在出現了這麼一種情況:Taoye有個頑皮的妹妹,她在用我電腦的時候,不小心將我的paper.txt論文文件從本地磁盤刪除了。一氣之下,Taoye將妹妹關進了小黑屋自我反省七天。悲劇啊,Taoye忙活了將近一個月的論文就此煙消雲散,Git該如何挽回這樣的結局呢?

paper.txt文件刪除之後,我們使用git status來查看一下文件的狀態:

1$ git status
2On branch master
3Changes not staged for commit:
4  (use "git add/rm <file>..." to update what will be committed)
5  (use "git checkout -- <file>..." to discard changes in working directory)
6
7        deleted:    paper.txt
8
9no changes added to commit (use "git add" and/or "git commit -a")

在Git看來,你將文件從工作區中刪除,其實也是對文件的一種修改。也就是說,現在我們的工作區中的內容與版本庫中的內容不一致(工作區沒有了paper.txt文件,而版本庫依然存在paper.txt文件)。為了將兩者空間中的內容達到一致,我們現在有兩種選擇,一是將版本庫中的paper.txt文件刪除掉,二是將工作區中的paper.txt文件恢復。

有了以上的思路,我們可以有如下操作:

1# 將版本庫中的paper.txt文件刪除掉,需要執行commit才會生效
2git rm -f paper.txt
3git commit -m "delete the paper.txt"
4
5# 將工作區中的paper.txt文件恢復
6git checkout -- paper.txt

對於文件的刪除,需要注意的是,只有提交到版本庫的文件,才能進行恢復,對於為提交到版本庫的文件是無法進行恢復的。

四、本地項目遠程提交到Github倉庫

Taoye在之前參加2019年騰訊微信小程序比賽的時候,開發了一個關於偵探推理的項目。Taoye現在想要將該項目從本地提交到Github,該如何實現呢?

我們在實現該需求之前,首先需要將本地與Github進行聯通。對此我們應該通過ssh在本地生成一個公鑰,然後在Github中配置該公鑰。操作如下:

1# 1、生成公鑰,執行之後會在.ssh目錄中生成秘鑰文件,其中id_rsa.pub表示的是公鑰
2cd ~/.ssh
3ssh-keygen -t rsa 26647879@qq.com
4# 2、進入github,settings -> SSH keys -> add key,然後將id_rsa.put中的公鑰複製進去
5# 3、配置好公鑰之後,需要驗證本地與github的連通性
6ssh -T git@github.com

在確認本地與Github聯通之後,我們就能正常地將項目從本地遠程提交到Github中了。

  • 登錄Github,創建一個目標倉庫,取名為detective,用來存儲我們的項目,並複製其中的.git鏈接地址
  • 在Github創建倉庫之後,需要將該遠程倉庫與本地關聯起來
1# 在本地關聯目標倉庫,方便之後將項目推送至該遠程倉庫
2git remote add origin https://XXXXXX.git
  • 進入我們的本地項目,然後初始化為git可管理的倉庫
1cd detective
2git init
  • 將工作區中項目的所有文件添加至暫存區
1git add ./*
2

  • 將暫存區中的內容提交到版本庫當中
1git commit -m "commit the detective project" ./*
  • 將項目添加到版本庫之後,我們就可以將該項目推送至遠程倉庫了
1# 第一次推送
2git push -u origin master
3# 推送之後,如果我們的項目發生了修改,我們可以不用在使用-u參數進行推送
4git push origin master
5
6# 另外,如果有需要的話,我們還可以使用clone命令將遠程倉庫克隆到本地
7git clone https://XXXXXX.git

五、Git的分支管理

分支是Git當中一個非常重要的概念,分支有點類似於樹枝,也就意味着為了避免影響主線的正常開發,我們可以將任務從主線中分離開來,從而形成一個分支,之後的任務都是在分支中來完成的,當任務完成之後,就可以將完整的任務從分支提交到主線。

在前面版本回退一節當中,我們知道,每一次的提交都會產生一個版本,多次提交自然也就會產生多個版本。我們可以將每一個版本看做是一個珠子,而多個版本就會通過一條線串聯起來,從而形成一條版本鏈。這個版本鏈其實就是一個master分支,也就是我們上面所說的主線,我們每一次的提交都是基於master分支來完成的,而HEAD指針則是用來指向當前分支(在沒有其他分支的前提下,就是指向master)。

下面的圖文講解分支的內容,來自廖大大的教程:https://www.liaoxuefeng.com/wiki/896043488029600/900003767775424

一開始的時候,master分支是一條線,Git用master指向最新的提交,再用HEAD指向master,就能確定當前分支,以及當前分支的提交點:

每次提交,master分支都會向前移動一步,這樣,隨着你不斷提交,master分支的線也越來越長。

當我們創建新的分支,例如dev時,Git新建了一個指針叫dev,指向master相同的提交,再把HEAD指向dev,就表示當前分支在dev上:

你看,Git創建一個分支很快,因為除了增加一個dev指針,改改HEAD的指向,工作區的文件都沒有任何變化!

不過,從現在開始,對工作區的修改和提交就是針對dev分支了,比如新提交一次后,dev指針往前移動一步,而master指針不變:

假如我們在dev上的工作完成了,就可以把dev合併到master上。Git怎麼合併呢?最簡單的方法,就是直接把master指向dev的當前提交,就完成了合併:

所以Git合併分支也很快!就改改指針,工作區內容也不變!

合併完分支后,甚至可以刪除dev分支。刪除dev分支就是把dev指針給刪掉,刪掉后,我們就剩下了一條master分支:

分支的創建與合併

在上面,已經介紹了分支的概念及其斷鏈、成鏈的原理過程,下面我們通過Git命令來完成分支的創建與合併。

在Git中,我們可以通過git branch來查看有哪些分支、git branch xxx來創建一個分支,其中帶有*號的表示當前分支、git checkout xxx來切換分支:

1# 創建一個名為dev的分支
2$ git branch dev
3# 從master分支切換到dev分支中
4$ git checkout dev
5# 查看當前有多少分支
6$ git branch
7
8# 此外,我們還實現分支的創建、切換這兩個操作合併執行
9$ git checkout -b dev

現在,我們不妨在剛剛創建的dev分支中對paper.txt的內容進行編輯,在最下方添加這麼一句話:I'm writing the content of my paper.。編輯完成並保存之後,我們提交到版本 庫,並再次切換到master分支,使用cat命令來查看paper.txt的內容。

1$ git checkout dev      # 切換到dev分支
2$ vim paper.txt         # 編輯paper.txt,並增添一句話
3$ git add paper.txt     # 添加到暫存區
4$ git commit -m "writing the content of this paper" paper.txt   # 提交到版本庫
5$ cat paper.txt         # 查看paper.txt內容
6$ git checkout master   # 再次切換到master分支
7$ cat paper.txt         # 查看paper.txt內容

採用cat命令兩次查看paper.txt內容時,我們會發現在執行后一次命令時,paper.txt中的內容並沒有添加新增的一句話,這主要是因為我們剛剛採用vim編輯paper.txt的時候是基於dev分支進行的,提交也是提交到dev分支,而非master分支,所以當我們切換到master分支的時候並不能夠看見paper.txt編輯后的內容。如下圖所示:

而我們要想在master分支中查看到paper.txt的新內容,則需要將dev分支合併到master主分支中才行,採用的是git merge命令,操作如下:

1$ git checkout master
2$ git merge dev

合併完成之後,dev的任務已經完成了,也就沒有必要存在了,可以通過git branch -d xxx來刪除分支:

1$ git branch -d env
2Deleted branch env (was e9c7421).

單人分支合併時的衝突解決

在編程的世界里,多進程佔據了一個舉足輕重的地位。在高併發、高流量的場景下,我們一般通過多進程來提高項目的服務效率,以便提高用戶體驗。話雖如此,但是在使用多進程的時候,許多問題同樣會慢慢浮出水面。同樣地,Git分支雖然能夠方便多個的用戶協同開發,但是將多個不同內容的分支進行合併的時候卻會產生衝突,作為一個對技術有追求的Coder,我們應該要理解為什麼會產生衝突,以及產生衝突后我們應該怎樣解決。

出現衝突的場景:

  1. 切換到dev分支后,對paper.txt進行編輯,然後將保存后的文件提交到版本庫中。
  2. 切換到master分支,對paper.txt進行編輯,將保存后的文件提交到版本庫。
  3. master分支下,將dev分支進行合併。
 1# 1、在dev分支中對paper.txt文件進行編輯,並提交到版本庫
2git checkout dev
3git vim paper.txt
4git add paper.txt
5git commit -m "the first operation" paper.txt
6
7# 2、在master分支中對paper.txt文件進行編輯,並提交到版本庫
8git checkout master
9git vim paper.txt
10git add paper.txt
11git commit -m "the second operation" paper.txt
12
13# 3、在master分支中,將dev分支合併
14git merge dev

此時,在我們執行merge命令進行分支合併的時候,會出現如下內容:

1$ git merge dev
2Auto-merging paper.txt
3CONFLICT (content): Merge conflict in paper.txt
4Automatic merge failed; fix conflicts and then commit the result.

從如上Git給我們提供的信息可以知道,此時已經產生衝突,我們必須手動解決衝突才能再次提交,使用git status paper.txt也能查看產生衝突的信息。我們通過vim打開paper.txt文件可以看見如下內容:

 1Oh, my god, I will write my graduate paper.
2Come on, Taoye!
3
4I have finished the summary today!
5Some typos have been fixed.
6I'm writing the content of my paper.
7<<<<<<< HEAD
8
9the second operation.
10=======
11
12the first operation.
13>>>>>>> dev
14

對此,我們要想解決衝突,則需要在master主分支中手動編輯該文件,編輯並保存完成之後,在將文件提交到版本庫即可:

1vim paper.txt
2git add paper.txt
3git commit -m "solve the conflict" paper.txt
4
5# 查看分支的合併情況
6git log --graph --pretty=oneline --abbrev-commit

下面原則來自廖大大的Git教程:https://www.liaoxuefeng.com/wiki/896043488029600/900005860592480
在實際開發中,我們應該按照幾個基本原則進行分支管理:

  1. 首先,master分支應該是非常穩定的,也就是僅用來發布新版本,平時不能在上面幹活;
  2. 那在哪幹活呢?幹活都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,比如1.0版本發布時,再把dev分支合併到master上,在master分支發布1.0版本;
  3. 你和你的小夥伴們每個人都在dev分支上幹活,每個人都有自己的分支,時不時地往dev分支上合併就可以了。

所以,團隊合作的分支看起來就像這樣:

多人協作下的衝突解決

現在導師給Taoye提出的新需求是:两天內完成論文的初稿並提交。

Taoye大量的時間都花費在開黑中了,两天內完成這個任務對Taoye來說有點困難。於是乎,Taoye想要找妹妹幫忙完成論文的part1部分,而自己完成part2部分。如此一來,兩個進程協同進行,也就能完美的實現了導師給的需求。妙哉,妙哉!Taoye心想到這,立馬提交自己論文的半成品到遠程倉庫,然後給妹妹提供一個git鏈接供其clone。

1# Taoye將本地論文提交到遠程倉庫
2$ git push origin master
1# 妹妹將遠程倉庫克隆到本地
2$ git clone XXXXXX.git

OK,既然兩人的本地都有了論文文件,那麼接下來就要開始并行完成各自的任務了,為了避免自己的操作給主分支帶來不好的影響,於是在master分支中創建一個dev分支用來編輯文件。由於妹妹的效率比Taoye要快,所以率先完成了論文part1部分的內容,對此,妹妹有如下操作:

1# 妹妹的操作
2$ git branch dev
3$ git checkout dev
4$ vim paper.txt

並且在paper.txt添加內容:sister have finished the part1.,part1部分的內容完成之後,將dev分支迅速推送至遠程倉庫:

1$ git add paper.txt
2$ git commit -m "sister have finished the part1" paper.txt
3$ git push origin dev

OK,Taoye交給妹妹的任務已經完成了,於是就興奮的出去玩耍了。畢竟這篇論文是屬於Taoye的,所以還是需要認真的完成,自然花費的時間也就更多了。經歷了一晚上通宵的時間,終於是順利完成了part2部分的內容,於是屁顛屁顛的將論文提交至遠程倉庫:

1# Taoye的操作
2$ git checkout dev
3$ vim paper.txt
4# 在paper.txt添加一句:taoye have finished the part2
5$ git add paper.txt
6$ git commit -m "taoye have finished the part2" paper.txt
7$ git push origin dev

而就在Taoye推送論文到遠程倉庫的時候,由於自己推送內容與妹妹推送的內容不一致,所以導致推送失敗。我們通過Git給出的提示信息可以知道,要想解決這個衝突,首先需要通過pull命令將最新的提交拉取下來,然後與本地合併,解決衝突之後再推送到遠程倉庫。為此,Taoye立馬執行了pull命令:

1$ git pull

而在執行pull命令的時候,糟糕的問題又接踵而至了,Git提示說:There is no tracking information for the current branch.,也就是說本地的分支與遠程沒有建立鏈接。對此,我們可以建立鏈接后再執行pull命令:

1$ git branch --set-upstream-to=origin/dev dev
2$ git pull

雖然可以執行pull命令,但是會出現衝突提示,所以我們需要首先手動解決衝突,解決的方式和上節中一樣:對paper.txt文件進行編輯,然後提交並推送至遠程倉庫。所以,Taoye對paper.txt文件進行編輯之後,內容如下:

1taoye have finished the part1
2taoye have finished the part2

編輯好后,將文件保存並推送至遠程倉庫:

1$ git add paper.txt
2$ git commit -m "finished the part1 and part2" paper.txt
3$ git push origin dev

所以,在多人協作工作時我們一般准守如下過程:

  1. 完成任務后首先使用git push origin xxx推送至遠程倉庫
  2. 如果推送失敗,則需要執行git pull命令將最新的提交拉取下來
  3. 如果拉取失敗,則可能需要建立連接,所以執行git branch --set-upstream-to=origin/xxx xxx命令
  4. 解決之後,再次執行git pull命令嘗試拉取最新提交
  5. 此時,我們需要對衝突文件進行修改,等到修改完成之後,將文件推送至遠程倉庫

六、標籤管理

在上面的內容中,我們有介紹過,可以根據版本號(很長的字符串)來實現任意版本之間的穿越。但是通過這種較長字符串版本號的形式對用戶並不是特別友好,看的腦闊有點疼。所以我們一般可以給每一個版本貼上一個標籤,並且可以通過這個標籤來定位任意的版本,從而更加容易的實現版本穿越等需求。

在這,我們也可以將標籤看做是版本號的一個別名,使用標籤就相當於使用版本號,兩者的作用是等價的。如果有使用過Docker的話,應該會知道,在Docker中,我們每創建一個容器,Docker都會分配一個容器id以便於我們定位對應的容器,而我們自己也可以為每一個容器定義一個別名。我們在使用一系列的Docker命令對容器進行操作的時候,既可以通過容器id,也可以通過別名的形式來進行操作。

Git中,我們主要是採用tag命令來管理標籤,由於標籤比較的簡單,這裏就不一一講解了,與標籤相關的命令主要有以下一些:

 1$ git tag                       # 查看所有標籤
2$ git tag v1.0                  # 沒有指定版本,則默認給當前版本打標籤
3# 查看各個版本信息(版本號)
4$ git reflog paper.txt | git log --pretty=oneline paper.txt
5$ git tag v0.9 a35d6b           # 根據版本號來打標籤
6# 打標籤的同時,給標籤添上相應的說明
7$ git tag -a v0.1 -m "version 0.1 released" a35d6b
8$ git show v1.0                 # 查看對應的標籤信息
9$ git tag -d v0.9               # 刪除標籤
10
11$
 git reset --hard v0.9         # 根據標籤實現版本穿越

總結

總的來講,Git上手還是很快的,關鍵在於平時需要加強Git操作命令的訓練。以上關於Git的命令只是一部分,但如果掌握上述內容,還是可以輕鬆滿足Git的實際需求的。如果有興趣想要了解更多關於Git的知識,可以自行查閱相關的文檔或是書籍來進一步的學習。

參考資料

一個小時學會Git:https://www.cnblogs.com/best/p/7474442.html#!comments
廖雪峰Git教程:https://www.liaoxuefeng.com/wiki/896043488029600

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

※別再煩惱如何寫文案,掌握八大原則!

四、歸併排序 && 快速排序

一、歸併排序 Merge Sort

1.1、實現原理

  • 如果要排序一個數組,我們先把數組從中間分成前後兩部分,然後對前後兩部分分別排序,再將排好序的兩部分合併在一起,這樣整個數組就都有序了。
  • 歸併排序使用的就是分治思想。分治,顧名思義,就是分而治之,將一個大問題分解成小的子問題來解決。小的子問題解決了,大問題也就解決了。
  • 分治思想跟遞歸思想很像。分治算法一般都是用遞歸來實現的。 分治是一種解決問題的處理思想,遞歸是一種編程技巧,這兩者並不衝突。
  • 寫遞歸代碼的技巧就是,分析得出遞推公式,然後找到終止條件,最後將遞推公式翻譯成遞歸代碼。所以,要想寫出歸併排序的代碼,我們先寫出歸併排序的遞推公式。
  • 遞推公式:erge_sort(p…r) = merge(merge_sort(p…q), merge_sort(q+1…r))
  • 終止條件:p >= r 不用再繼續分解
  • merge_sort(p…r)表示,給下標從 p 到 r 之間的數組排序。
  • 我們將這個排序問題轉化為了兩個子問題, merge_sort(p…q) 和 merge_sort(q+1…r),其中下標 q 等於 p 和 r 的中間位置,也就是 (p+r)/2。
  • 當下標從 p 到 q 和從 q+1 到 r 這兩個子數組都排好序之後,我們再將兩個有序的子數組合併在一起,這樣下標從 p 到 r 之間的數據就也排好序了。
  • 實現思路如下:
/**
 * 歸併排序
 * @param arr 排序數據
 * @param n   數組大小
 */
public static void merge_sort(int[] arr, int n) {
    merge_sort_c(arr, 0, n - 1);
}

// 遞歸調用函數
public static void merge_sort_c(int[] arr, int p, int r) {
    // 遞歸終止條件
    if (p >= r) {
        return;
    }
    // 取p到r之間的中間位置q
    int q = (p + r) / 2;

    // 分治遞歸
    merge_sort_c(arr, p, q);
    merge_sort_c(arr, q + 1, r);
    // 將 arr[p...q] 和 arr[q+1...r] 合併為 arr[p...r]
    merge(arr[p...r],arr[p...q],arr[q + 1...r]);
}
  • merge(arr[p…r], arr[p…q], arr[q + 1…r]) 這個函數的作用就是,將已經有序的 arr[p…q] 和 arr[q+1…r] 合併成一個有序的數組,並且放入 arr[p…r]。
  • 如下圖所示,我們申請一個臨時數組 tmp,大小與 arr[p…r] 相同。
  • 我們用兩個游標 i 和 j,分別指向 arr[p…q] 和 arr[q+1…r] 的第一個元素。
  • 比較這兩個元素 arr[i] 和 arr[j],如果 arr[i] <= arr[j],我們就把 arr[i] 放入到臨時數組 tmp,並且 i 后移一位,否則將 arr[j] 放入到數組 tmp,j 后移一位。
  • 繼續上述比較過程,直到其中一個子數組中的所有數據都放入臨時數組中,再把另一個數組中的數據依次加入到臨時數組的末尾,這個時候,臨時數組中存儲的就是兩個子數組合併之後的結果了。
  • 最後再把臨時數組 tmp 中的數據拷貝到原數組 arr[p…r] 中。
/**
 * merge 合併函數
 * @param arr 數組
 * @param p   數組頭
 * @param q   數組中間位置
 * @param r   數組尾
 */
public static void merge(int[] arr, int p, int q, int r) {
    if (r <= p) return;

    // 初始化變量i j k
    int i = p;
    int j = q + 1;
    int k = 0;

    // 申請一個大小跟A[p...r]一樣的臨時數組
    int[] tmp = new int[r - p + 1];

    // 比較排序移動到臨時數組
    while ((i <= q) && (j <= r)) {
        if (arr[i] <= arr[j]) {
            tmp[k++] = arr[i++];
        } else {
            tmp[k++] = arr[j++];
        }
    }

    // 判斷哪個子數組中有剩餘的數據
    int start = i, end = q;
    if (j <= r) {
        start = j;
        end = r;
    }

    // 將剩餘的數據拷貝到臨時數組tmp
    while (start <= end) {
        tmp[k++] = arr[start++];
    }

    // 將tmp中的數組拷貝回 arr[p...r]
    for (int a = 0; a <= r - p; a++) {
        arr[p + a] = tmp[a];
    }
}

1.2、性能分析

  • 歸併排序穩不穩定關鍵要看 merge() 函數,也就是兩個有序子數組合併成一個有序數組的那部分代碼。
  • 在合併的過程中,如果 arr[p…q] 和 arr[q+1…r] 之間有值相同的元素,那我們可以像偽代碼中那樣,先把 arr[p…q] 中的元素放入 tmp 數組。
  • 這樣就保證了值相同的元素,在合併前後的先後順序不變。所以,歸併排序是一個穩定的排序算法
  • 其時間複雜度是非常穩定的,不管是最好情況、最壞情況,還是平均情況,時間複雜度都是 O(nlogn)
  • 歸併排序的合併函數,在合併兩個有序數組為一個有序數組時,需要藉助額外的存儲空間。
  • 儘管每次合併操作都需要申請額外的內存空間,但在合併完成之後,臨時開闢的內存空間就被釋放掉了。在任意時刻,CPU 只會有一個函數在執行,也就只會有一個臨時的內存空間在使用。
  • 臨時內存空間最大也不會超過 n 個數據的大小,所以空間複雜度是 O(n),不是原地排序算法。

二、快速排序 Quicksort

2.1、實現原理

  • 快排的思想是:如果要排序數組中下標從 p 到 r 之間的一組數據,可以選擇 p 到 r 之間的任意一個數據作為 pivot(分區點)。
  • 遍歷 p 到 r 之間的數據,將小於 pivot 的放到左邊,將大於 pivot 的放到右邊,將 pivot 放到中間。
  • 經過這一步驟之後,數組 p 到 r 之間的數據就被分成了三個部分,前面 p 到 q-1 之間都是小於 pivot 的,中間是 pivot,後面的 q+1 到 r 之間是大於 pivot 的。
  • 根據分治、遞歸的處理思想,可以用遞歸排序下標從 p 到 q-1 之間的數據和下標從 q+1 到 r 之間的數據,直到區間縮小為 1,就說明所有的數據都有序了。
  • 用遞推公式來將上面的過程寫出來的話,就是這樣:quick_sort(p…r) = quick_sort(p…q-1) + quick_sort(q+1, r)。
  • 終止條件:p >= r
/**
 * 快速排序
 * @param arr 排序數組
 * @param p 數組頭
 * @param r 數組尾
 */
public static void quickSort(int[] arr, int p, int r) {
    if (p >= r) 
        return;
    // 獲取分區點 並移動數據
    int q = partition(arr, p, r);
    quickSort(arr, p, q - 1);
    quickSort(arr, q + 1, r);
}

partition() 分區函數:

  • 是隨機選擇一個元素作為 pivot(一般情況下,可以選擇 p 到 r 區間的最後一個元素),然後對 arr[p…r] 分區,並將小於 pivot 的放右邊,大於的放左邊,函數返回 pivot 的下標。

partition() 的實現有兩種方式:

  • 一種是不考慮空間消耗,此時非常簡單。

    • 申請兩個臨時數組 X 和 Y,遍歷 arr[p…r],將小於 pivot 的元素都拷貝到臨時數組 X,將大於 pivot 的元素都拷貝到臨時數組 Y,最後再將數組 X 和數組 Y 中數據順序拷貝到arr[p…r]。
    /**
     * 分區函數方式一
     *
     * @param arr 數組
     * @param p   上標
     * @param r   下標
     * @return 函數返回 pivot 的下標
     */
    public static int partition1(int[] arr, int p, int r) {
        int[] xArr = new int[r - p + 1];
        int x = 0;
    
        int[] yArr = new int[r - p + 1];
        int y = 0;
    
        int pivot = arr[r];
    
        // 將小於 pivot 的元素都拷貝到臨時數組 X,將大於 pivot 的元素都拷貝到臨時數組 Y
        for (int i = p; i < r; i++) {
            // 小於 pivot 的存入 xArr 數組
            if (arr[i] < pivot) {
                xArr[x++] = arr[i];
            }
            // 大於 pivot 的存入 yArr 數組
            if (arr[i] > pivot) {
                yArr[y++] = arr[i];
            }
        }
    
        int q = x + p;
        // 再將數組 X 和數組 Y 中數據順序拷貝到 arr[p…r]
        for (int i = 0; i < x; i++) {
            arr[p + i] = xArr[i];
        }
        arr[q] = pivot;
        for (int i = 0; i < y; i++) {
            arr[q + 1 + i] = yArr[i];
        }
    
        return q;
    }
    
  • 另外一種有點類似選擇排序。

    • 我們通過游標 i 把 arr[p…r-1] 分成兩部分。arr[p…i-1] 的元素都是小於 pivot 的,我們暫且叫它“已處理區間”,arr[i…r-1] 是“未處理區間”。
    • 我們每次都從未處理的區間 arr[i…r-1] 中取一個元素 arr[j],與 pivot 對比,如果小於 pivot,則將其加入到已處理區間的尾部,也就是 arr[i]的位置。
    • 在數組某個位置插入元素,需要搬移數據,非常耗時。此時可以採用交換,在 O(1) 的時間複雜度內完成插入操作。需要將 arr[i] 與 arr[j] 交換,就可以在 O(1)時間複雜度內將 arr[j] 放到下標為 i 的位置。
    /**
     * 分區函數方式二
     * @param arr 數組
     * @param p   上標
     * @param r   下標
     * @return 函數返回pivot的下標
     */
    public static int partition2(int[] arr, int p, int r) {
        int pivot = arr[r];
        int i = p;
        for (int j = p; j < r; j++) {
            if (arr[j] < pivot) {
                if (i == j) {
                    ++i;
                } else {
                    int tmp = arr[i];
                    arr[i++] = arr[j];
                    arr[j] = tmp;
                }
            }
        }
        int tmp = arr[i];
        arr[i] = arr[r];
        arr[r] = tmp;
        return i;
    }
    

2.2、性能分析

  • 因為分區的過程涉及交換操作,如果數組中有兩個相同的元素,比如序列 6, 8, 7, 6, 3, 5, 9, 4,在經過第一次分區操作之後,兩個 6 的相對先後順序就會改變。所以,快速排序並不是穩定的排序算法
  • 按照上面的第二種分區方式,快速排序只涉及交換操作,所以空間複雜度為 Q(1),是原地排序算法
  • 時間複雜度為 Q(nlogn),最差為Q(n²)

三、兩者對比

歸併排序 快速排序
排序思想 處理過程由下到上,先處理子問題,然後在合併 由上到下,先分區,在處理子問題
穩定性
空間複雜度 Q(n) Q(1) 原地排序算法
時間複雜度 都為 O(nlogn) 平均為 O(nlogn),最差為 O(n²)
  • 歸併之所以是非原地排序算法,主要原因是合併函數無法在原地執行。快速排序通過設計巧妙的原地分區函數,可以實現原地排序,解決了歸併排序佔用太多內存的問題。
  • 歸併排序算法是一種在任何情況下時間複雜度都比較穩定的排序算法,這也使它存在致命的缺點,即歸併排序不是原地排序算法,空間複雜度比較高,是 O(n)。正因為此,它也沒有快排應用廣泛。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※想知道最厲害的網頁設計公司"嚨底家"!

※別再煩惱如何寫文案,掌握八大原則!

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※回頭車貨運收費標準

台中搬家公司費用怎麼算?

疫情衝擊泰國觀光業 大象賺不到生活費恐餓死

摘錄自2020年3月31日中央社報導

隨著武漢肺炎大流行讓觀光客銳減,倡議人士警告,在泰國旅遊業工作的許多飢餓並遭長時間鍊住的大象,可能會因沒有收入而餓死、被賣給動物園,或轉入非法伐木業。

在疫情爆發前,在泰國旅遊業工作的約2000頭大象生活已不容易,時常傳出虐待情事,好馴化牠們提供乘載服務或在動物秀上表演雜耍賺錢。但因全球旅遊業停擺,大象現在甚至賺不到一天必須的300公斤食物錢。

大象生態營與保育人士警告,再不獲得緊急援助,象群即將面臨飢餓及新的剝削威脅。泰國大象聯盟協會(Thai Elephant Alliance Association)主席提拉帕(Theerapat Trungprakan)表示,隨著病毒重挫泰國觀光業,約2000頭大象現在失業了。

國際新聞
泰國
大象
觀光業
動物與大環境變遷
武漢肺炎
展示動物
動物福利

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

網頁設計最專業,超強功能平台可客製化

※回頭車貨運收費標準

分解塑膠救星?科學家在垃圾場中發現吃聚氨酯的微生物

環境資訊中心綜合外電;姜唯 編譯;林大利 審校

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※想知道最厲害的網頁設計公司"嚨底家"!

※別再煩惱如何寫文案,掌握八大原則!

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※回頭車貨運收費標準

台中搬家公司費用怎麼算?

2017 CTOY 花落福田戴姆勒汽車

在頒獎典禮上,中國年度卡車評委會主席於晶對歐曼EST超級卡車給予了高度評價:歐曼EST超級卡車不僅秉承了歐洲重卡設計理念,在質量和效率方面也引進了戴姆勒的體系和標準,在動力、環保、安全、智能化方面展示出富有前瞻性的技術水平,在實際測試過程中,歐曼EST的加速時間、制動距離以及車內噪聲等多項數據都處於行業領先水平。

2016年11月17日,“2017中國年度卡車”(CToY)頒獎典禮暨廣州商用車展媒體之夜”在廣州舉行;中國國際貿易促進委員會汽車行業分會副會長楊琳、國際年度卡車組委會主席Gianenrico Griffini(格里菲尼)、中國年度卡車評委會主席於晶以及來自整車及零部件生產企業的代表、國內主流行業媒體代表,共同見證了這一中國卡車行業的年度盛事。

在經過包括技術創新、舒適性、安全性、操控性、燃油經濟性、清潔環保和總體擁有成本等方面的綜合評價后,11月正式中國上市的歐曼EST超級卡車最終摘得了“2017中國年度卡車”桂冠,成為中國首個獲得此項殊榮的重卡車型;這是歐曼EST在歷經了“4年的歐洲研發、德國DEKRA的歐洲嚴苛測試、德國漢諾威全球上市”的品質驗證后,獲得的首個極具含金量的年度大獎;這是國際年度卡車評委會、中國年度卡車評委會對歐曼EST超級卡車的卓越品質給予的高度認可,也是對福田戴姆勒汽車在推動中國重卡市場高端化發展方面給予的肯定。

2017中國年度卡車大獎含金量有多高?

中國年度卡車是國內商用車行業首個引入“國際年度卡車”獎項評選標準及規則的獎項, 並結合中國道路運輸實際情況,以客觀公正的平台、專業縝密的視角評選出年度最具標杆意義的中國卡車車型。

“國際年度卡車”獎是目前國際上廣泛認可的權威評選卡車類獎項,代表了歐洲最嚴苛的評價指標。作為世界最大的商用車生產商梅賽德斯-奔馳憑藉旗下多款創新車型,曾8次摘得“國際年度卡車”獎項,成為榮獲此獎項次數最多的品牌。 “中國年度卡車”與“國際年度卡車”評選有着同樣的含金量,受邀出席頒獎典禮的國際年度卡車評委會主席Gianenrico Griffini(格里菲尼)也表達了對“2017中國年度卡車”評選的肯定,並表示國際年度卡車評委會將為中國年度卡車評選提供最大的支持。

“2017中國年度卡車”大獎的所有參評車型,必須經過由國際年度卡車評委會成員、媒體代表、用戶及第三方測試機構組成的專業評委會客觀公正、專業縝密的評測;其評測標準也是依據國際年度卡車評選及歐洲卡車1000分評測方法,涉及駕駛室空間及內飾設計、駕乘舒適性、操控性能、車輛總擁有成本、安全性、動力性等6個大項、26個小項;無論是從評價體系的成熟性上還是從評測人員及項目的專業性上,“2017中國年度卡車”獎項的含金量可謂首屈一指。

在頒獎典禮上,中國年度卡車評委會主席於晶對歐曼EST超級卡車給予了高度評價:歐曼EST超級卡車不僅秉承了歐洲重卡設計理念,在質量和效率方面也引進了戴姆勒的體系和標準,在動力、環保、安全、智能化方面展示出富有前瞻性的技術水平,在實際測試過程中,歐曼EST的加速時間、制動距離以及車內噪聲等多項數據都處於行業領先水平。

超級卡車憑什麼能獲得年度卡車大獎?

“2017中國年度卡車大獎”旨在頒發給最近12個月內發布的、從多方面對道路運輸效率做出最大貢獻的中國品牌卡車;更高的質量、更強的性能、更快的效率、更低的成本,歐曼EST超級卡車在提升整个中國重卡技術與品質方面做出了巨大貢獻,換句話說,歐曼EST超級卡車成為“2017中國年度卡車”實至名歸。“歐曼EST超級卡車充分吸收了‘超級卡車全球創新聯盟’成員的先進科技成果,以“北京超級卡車創新中心”為依託,實現了自動駕駛、新能源及車聯網等智慧科技的應用,使歐曼EST超級卡車擁有了媲美國際重卡的技術實力。” 福田戴姆勒汽車品牌總監李健致辭中表示。

歐曼EST超級卡車是福田戴姆勒汽車鏈合德國戴姆勒整車及動力技術,攜手美國康明斯、德國采埃孚、德國大陸等超級卡車全球創新聯盟成員,面向準時高效、長途高附加值貨運等高端物流客戶,歷時4年以歐洲標準研發, 完成了歐洲最嚴苛的德國DEKRA測試,以及歷經1000萬公里實際道路測試,實現了油耗降低5-10%,碳排放減少10-15%,貨運效率提升30%,實現智能輔助駕駛、B10壽命達到150萬公里以及10萬公里的超長保養周期的卓越性能,全面提升了中國現代化物流體系在智能化、安全性、高效性方面的發展速度。歐曼EST超級卡車於11月14日,在2016中國上海智能網聯汽車展覽會上,正式上市,登陸中國市場,為中國用戶在未來高效物流運輸市場競爭中,注入了來自“超級卡車”的超級競爭力!

參与測試的中國年度卡車評委會的評委一致認為:歐曼EST的駕駛室在空間和舒適性方面接近歐洲品牌卡車,非常適合超長距離運輸使用;其採用的采埃孚TraXon自動變速器與奔馳、康明斯發動機匹配完美,對於中國市場而言是一項巨大的進步,可以滿足中國用戶日益提高的使用需求;此外,歐曼EST超級卡車還具有良好的視野和高速行駛穩定性,多項主被動安全裝置讓車輛更加容易操控;採用氣囊減振的駕駛室及空氣懸架底盤,在測試過程中帶來了良好的駕乘舒適性;在有效載荷和保養間隔等方面能幫助用戶有效提高運營效率,作為一款專為中國市場打造的高端長途運輸車型,歐曼EST超級卡車全面展示了中國重卡的最新技術水平。

歐曼EST超級卡車在歷經了歐洲研發、歐洲測試、歐洲車展、歐洲上市之後,回到中國,憑藉在“智能化、安全性、可靠性、經濟性及舒適性”方面的卓越表現,獲得“2017中國年度卡車”大獎,以歐洲科技的品質內涵,確立了在中國重卡行業的技術領先地位,全面滿足重卡用戶高端化、高效化、智能化的需求!未來,福田戴姆勒汽車將再接再厲,充分吸收“超級卡車全球創新聯盟”成員的先進科技成果,以“北京超級卡車創新中心”為依託,以品質、技術和創新能力打造更具核心競爭力的產品,不斷提升中國卡車技術水平本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

※別再煩惱如何寫文案,掌握八大原則!

16款車評選投票結果公布,小米MAX獲獎名單在此!

按照規則,5篇文章中任意1篇,評論獲得支持率最高的用戶可以獲得小米MAX一台。支持率排名2-5位的用戶,可以獲得變形金剛吸塵器1個。支持率排名6-10位的用戶,可以獲得變形金剛皮套1個。注意:每位微信用戶在本次活動僅能獲得一個獎品,以最高排名的文章為準,其餘文章的排名作廢,獎品將順延至下一位。

經過4天時間的激烈角逐,玩車、車買買、玩車TV三大號聯合舉辦的“2016我就喜歡”年度車型評選投票,終於完滿結束。

本次參与投票的年度車型共有8款SUV和8款轎車,是由我們三大號資深編輯共同探討票選的,涵蓋10-50萬今年較為熱門的車型,名單如下所示。

活動評選規則為:由三大號5篇對比文章的投票數相加,得票最高的車型,將被評選為我們的“年度最受網友喜愛的車型”。

話不多說,馬上來看看本次評選的投票結果。

從數據中可以看出,三大平台用戶對車的喜好是相近的,投票的結果都差不多,TOp3車型更是符合小編的心理預期。

年度車型評選的投票結果公布完畢,但別忘了還有件正事——“送小米MAX”活動獲獎名單公布!

為了回饋我們三大號的粉絲,小編可是下了血本購回5台小米MAX,20個變形金剛大黃蜂吸塵器,以及25個變形金剛大黃蜂皮套來送給大家。活動規則公平,在微信平台上全程公開,所以人人的機會都是平等的。

按照規則,5篇文章中任意1篇,評論獲得支持率最高的用戶可以獲得小米MAX一台;支持率排名2-5位的用戶,可以獲得變形金剛吸塵器1個;支持率排名6-10位的用戶,可以獲得變形金剛皮套1個。

注意:每位微信用戶在本次活動僅能獲得一個獎品,以最高排名的文章為準,其餘文章的排名作廢,獎品將順延至下一位。

經過4天的龍爭虎鬥,跌宕起伏的排名終於在11月22日晚24點那一刻定格,獲獎名單如下:

請獲獎用戶按以下步驟聯繫我們:

1、獲獎評論的“留言入選提示”截圖

2、投票頁面截圖

3、編輯您的姓名、電話、郵寄地址

4、將2張截圖以及您的信息,用中獎微信號發送至文章所在公眾號的聊天界面(玩車、車買買、玩車TV)

最後,我們會有專人在工作日第一時間與您取得聯繫,中獎獎品將在確認信息后,在3個工作日內陸續發出。如果在11月25日晚24:00尚未領獎的,我們將順延至下一位用戶,以此類推。

活動詳情規則請點擊

寫在最後:

我們辦這個活動的初衷,就是以有趣的形式給大家帶來相關車型的對比,車型數龐大、內容精緻,讓用戶通過3個平台不同的對比能更直觀地了解一台車。最後活動也取得了非常高的關注度,還有用戶在看完我們的建議後果斷訂了車,總之非常感謝大家能給予我們支持,我們在日後還會給大家帶來更有價值的汽車內容。

回顧8款轎車/8款SUV精彩專題報道

請點擊此處:【廣州車展專題回顧】本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

※回頭車貨運收費標準

網頁設計最專業,超強功能平台可客製化

※別再煩惱如何寫文案,掌握八大原則!