最近一直在回憶學(xué)習(xí)git的一些過(guò)程惜互,覺(jué)得很有意義,延伸出來(lái)就是如何學(xué)習(xí)計(jì)算機(jī)知識(shí)的一些思路琳拭,如果一個(gè)人從來(lái)沒(méi)有接觸過(guò)git或github训堆,那么如何下手呢?
不管我們懂不懂git或github白嘁,首先要明白它們不是一回事坑鱼,git可以認(rèn)為是一個(gè)協(xié)議或者一個(gè)工具,主要工作是版本控制絮缅,git蘊(yùn)含了很多優(yōu)秀和靈活的工作流姑躲。
而github是基于git開(kāi)發(fā)的一個(gè)分布式服務(wù)睡扬,相當(dāng)于一個(gè)git服務(wù)器端,對(duì)于用戶來(lái)說(shuō)黍析,自己就像一個(gè)客戶端在和github服務(wù)器端交互卖怜,而且也不用擔(dān)心文件會(huì)丟失。
github基于git開(kāi)發(fā)了很多功能阐枣,這些功能主要是為了協(xié)作開(kāi)發(fā)马靠,比如 Fork、Issues蔼两,屬于一種新的互聯(lián)網(wǎng)開(kāi)發(fā)模式甩鳄,其核心在于工作流,所謂工作流就是有一定規(guī)模的團(tuán)隊(duì)额划,或者處于不同地方人的一種協(xié)作方式妙啃,更好的開(kāi)發(fā)、協(xié)作俊戳、審查揖赴、分享、跟蹤抑胎,讓效率最大化燥滑。
通過(guò)上面描述,很清晰的看到git和github側(cè)重點(diǎn)阿逃,有了github才讓大家有更多學(xué)習(xí)git的動(dòng)力铭拧,在學(xué)習(xí)github之前務(wù)必先掌握git,然后進(jìn)行g(shù)ithub的學(xué)習(xí)恃锉,這是我的第一個(gè)建議搀菩。磨刀不誤砍柴工,掌握好git破托,再去學(xué)習(xí)github效果會(huì)更好秕磷。
第二個(gè)建議就是掌握git是必須的,學(xué)好git&github炼团,不會(huì)立刻讓你找到好工作澎嚣,但絕對(duì)有用。開(kāi)發(fā)語(yǔ)言瘟芝、數(shù)據(jù)結(jié)構(gòu)/網(wǎng)絡(luò)這樣的計(jì)算機(jī)基礎(chǔ)知識(shí)的重要性不言而喻易桃,屬于硬技能,而git屬于軟技能锌俱,不一定能立刻提升你的水平晤郑,但絕對(duì)是加分項(xiàng)。
svn沒(méi)有想象的那么差,大家不要妄自菲薄造寝,這是我的第三個(gè)建議磕洪。相信大部分人都使用過(guò)svn,一個(gè)老牌的版本管理軟件诫龙,其實(shí)我也沒(méi)有熱衷于學(xué)習(xí)git析显,因?yàn)閟vn雖然現(xiàn)在看上去很落伍,但本質(zhì)上也能完成大部分任務(wù)签赃,為什么一定要去學(xué)習(xí)git呢谷异?這是我的一個(gè)疑惑,這是時(shí)代的產(chǎn)物锦聊。
有人說(shuō)svn速度慢啊歹嘹,不靈活啊,其實(shí)只要你熟練掌握svn孔庭,真覺(jué)得速度不是障礙尺上,尤其對(duì)于規(guī)模不大的團(tuán)隊(duì)來(lái)說(shuō),我們公司現(xiàn)在還在用svn圆到,只要把它的工作原理掌握透怎抛,其實(shí)還是非常不錯(cuò)的。
在學(xué)習(xí)的時(shí)候构资,還是要理性對(duì)待,不要學(xué)git的同時(shí)瞧不起svn陨簇。
另外學(xué)習(xí)到一定程度的時(shí)候吐绵,時(shí)刻比較下git和svn之間的差異,能夠讓你更好的理解河绽,不要滿足于對(duì)工具的使用己单,重點(diǎn)比較工作流之間的差別,這是我的第四個(gè)建議耙饰。
git強(qiáng)調(diào)的是命令操作纹笼,核心了解分支、合并苟跪、提交等概念廷痘,但如果你在工作或者學(xué)習(xí)過(guò)程中,僅僅自己玩件已,很難真正掌握笋额,
而github是工作流,這也是我們學(xué)習(xí)中的一個(gè)難點(diǎn):你可能感覺(jué)自己git用的很不錯(cuò)了篷扩,但還是沒(méi)能玩轉(zhuǎn)github兄猩,原因就在于沒(méi)有應(yīng)用場(chǎng)景,就算是大公司,也不能強(qiáng)逼著套用一些復(fù)雜的工作流(也許是我的問(wèn)題)枢冤。
第五個(gè)建議就是不要光學(xué)git命令鸠姨,要更多的參與到github,比如給別人發(fā)個(gè)PR淹真,提交個(gè)Issues讶迁,或者自己弄個(gè)開(kāi)源的倉(cāng)庫(kù),只有參與進(jìn)去才能更好的掌握github(git)。
其實(shí)學(xué)git不僅僅是為了使用,要是能夠了解其工作原理雇逞,對(duì)于掌握會(huì)更有好處浪漠,git的設(shè)計(jì)理念應(yīng)該是很牛逼的(我不太懂),掌握的話就相當(dāng)于掌握了優(yōu)秀的算法設(shè)計(jì)窿冯。
以前總覺(jué)得學(xué)不得法,覺(jué)得理解不到正點(diǎn)上,后來(lái)看了《Git版本控制管理》第四章的時(shí)候搀愧,自己突然明白了很多,從整體上意識(shí)到git原來(lái)是這樣存儲(chǔ)的疆偿、這樣設(shè)計(jì)的咱筛,后續(xù)再學(xué)的時(shí)候,就輕松了很多杆故,這就是我的第六個(gè)建議迅箩,那就是盡量從原理層面去理解它,思考為什么是這樣的处铛。
我很喜歡收集git常用命令饲趋,然后記錄下來(lái),用的時(shí)候很方便撤蟆,可后來(lái)發(fā)現(xiàn)git的命令及可用參數(shù)太多了奕塑,就算會(huì)用,也不一定理解啥含義家肯,而且隨著 git 版本的升級(jí)龄砰,某些參數(shù)的含義還有可能變化,這種使用 git 的方式感覺(jué)太殘忍了讨衣。
無(wú)意當(dāng)中在linux上man了下 git 的手冊(cè)换棚,發(fā)現(xiàn)里面講的真詳細(xì)啊,一些牛人寫(xiě)的git文章感覺(jué)就來(lái)于此反镇,而且是最權(quán)威的圃泡,不會(huì)有模棱兩可的含義。
從那以后愿险,在學(xué)習(xí)過(guò)程中颇蜡,我就有意無(wú)意看手冊(cè)价说,在看書(shū)或文章的時(shí)候,也時(shí)不時(shí)的打開(kāi)手冊(cè)风秤,印證下理解的對(duì)不對(duì)鳖目。
看手冊(cè)是我的第七個(gè)建議,但手冊(cè)確實(shí)挺晦澀的缤弦,如果沒(méi)有耐心领迈,很難看完,所以我也一直在找如何更好利用git手冊(cè)的訣竅碍沐。
那么學(xué)習(xí)git有什么好的建議呢狸捅,第八個(gè)建議沒(méi)有任何事情是簡(jiǎn)單的,大家都希望在很短的時(shí)間掌握git累提,希望走捷徑尘喝,比如找個(gè)牛逼人寫(xiě)的牛逼教程,還希望教程內(nèi)容不要太多斋陪,可世界上哪有那么多好的事情朽褪,相信我,如果你不實(shí)實(shí)在在的花時(shí)間无虚,是很難好好掌握的缔赠,只有不斷的摸索,實(shí)踐友题、總結(jié)嗤堰、嘗試、犯錯(cuò)度宦,最終才能找到合適的方法學(xué)習(xí)git踢匣,而且每個(gè)人的情況不一樣,別人的經(jīng)驗(yàn)不一定對(duì)你有用斗埂,一定要多花時(shí)間符糊,看不到不要放棄凫海,實(shí)在看不下去了呛凶,就第二天看,或者再過(guò)一周看行贪,反正如果你沒(méi)有三個(gè)月的時(shí)間漾稀,我覺(jué)得要正在掌握還是很難的。
在工作過(guò)程中建瘫,如果重度依賴git崭捍,那么在學(xué)習(xí)的過(guò)程中肯定會(huì)輕松不少,一方面是壓力促使你學(xué)習(xí)啰脚,另外也有高手指點(diǎn)你殷蛇。
如果你是自學(xué)实夹,我覺(jué)得沒(méi)有好的方法,至少我是這么認(rèn)為的粒梦。
所謂好的方法亮航,就是“通過(guò)你平時(shí)的積累,找到適合的方式匀们,將這個(gè)學(xué)習(xí)時(shí)間縮短缴淋,同時(shí)也你能保證學(xué)習(xí)效果”。
git和github我也只學(xué)了點(diǎn)皮毛泄朴,這篇文章只是學(xué)習(xí)過(guò)程中的一個(gè)簡(jiǎn)單想法重抖,代表階段性的總結(jié),后面還會(huì)繼續(xù)學(xué)下去祖灰。
最后推薦幾個(gè)學(xué)習(xí)資料吧:
- 《Git版本控制管理》钟沛,至少要看完一本書(shū)。
- https://github.com/geeeeeeeeek/git-recipes夫植,還不錯(cuò)讹剔,主要翻譯之 https://www.atlassian.com/git/tutorials。
- https://github.com/git-tips/tips详民,常用的一些命令延欠。
- https://marklodato.github.io/visual-git-guide/index-en.html,圖解git沈跨。
歡迎關(guān)注我的公眾號(hào)(ID:yudadanwx由捎,虞大膽的嘰嘰喳喳),一直在用心寫(xiě)饿凛。