乘風(fēng)破浪的程序員們必備知識(shí):git全方位學(xué)習(xí)
課工場(chǎng) | 2020-07-14 15:05:10  2526 瀏覽

工欲善其事必先利其器,對(duì)于乘風(fēng)破浪的程序員后浪們來說,最基礎(chǔ)也最重要的工具便是Git了。Git是程序員代碼的托管平臺(tái),與同事一起協(xié)作辦公的工具,代碼變更的記錄存儲(chǔ),所以Git知識(shí)的掌握非常重要,利用好工具也能更好的服務(wù)于工作。大家今天有福利了,因?yàn)榻裉煳覀儠?huì)詳細(xì)的給大家介紹Git相關(guān)知識(shí),全方位的讓你掌握Git~

本文介紹的內(nèi)容包含Git初階之Git是什么?、Git初階之Git的理論基礎(chǔ)、Git初階之Git的常用基礎(chǔ)命令、Git中階之沖突處理、Git高階之回退。

Git是什么?

Git是一個(gè)分布式版本控制系統(tǒng),存儲(chǔ)文件內(nèi)容和文件變更記錄。所謂分布式是相對(duì)于集中式而言的,集中式是有一臺(tái)中心服務(wù)器,所有的文件都存儲(chǔ)在上面,這樣出現(xiàn)的問題是如果這個(gè)服務(wù)器宕機(jī)了或壞掉了,那么所有的文件都沒了。分布式就是去中心化,每臺(tái)服務(wù)器都可以存儲(chǔ)項(xiàng)目?jī)?nèi)容,這樣即使某一臺(tái)壞掉了,其他的人還可以從別的服務(wù)器去拷貝獲取內(nèi)容。所謂版本控制系統(tǒng)就是存儲(chǔ)代碼、文檔等內(nèi)容,并且把每次內(nèi)容的變更詳情都清晰的記錄下來。常用的Git工具有Github、Gitlab、Gitee等。Git的分布式文件系統(tǒng)概念就好像是在一個(gè)家庭里把錢全交給老婆管,每一次的進(jìn)賬出賬全以本本記錄下來,老婆如果跟著別人跑了或者自己去炒股,那么所有的錢都沒了,但如果是家里每個(gè)人都管一部分,這個(gè)即使老婆這部分沒了,老公那剩余的錢還可以支撐整個(gè)家庭,而每一次錢的變動(dòng)(比如增加多少、花在什么地方、誰花的)全都清清楚楚記錄下來。

Git的理論基礎(chǔ)

理論基礎(chǔ)1之基礎(chǔ)概念。在Git中最基礎(chǔ)的三個(gè)概念是工作區(qū)workspace、倉庫repository、暫存區(qū)Index。所謂工作區(qū)就是電腦上的本地文件和目錄,通過Git的版本控制,構(gòu)成了工作區(qū)。所謂暫存區(qū)就是暫時(shí)存放代碼的地方。所謂倉庫就是存儲(chǔ)代碼的地方,包含本地倉庫和遠(yuǎn)程倉庫,本地倉庫用于自己寫新代碼,寫好了先提交到暫存區(qū),經(jīng)過多次提交感覺差不多了,最后在提交到遠(yuǎn)程倉庫。整體的工作流程就像是儲(chǔ)蓄,比如擺地?cái)偟某绦騿T小ke,他通過每天的辛苦勞動(dòng),每天的收錢罐(暫存區(qū))都有對(duì)應(yīng)的錢,辛苦忙完一天后,小ke會(huì)盤算每天的進(jìn)賬,把錢放到家里的存錢罐(本地倉庫),擺地?cái)偤軖赍X啊(哼?還寫什么代碼呢,擺攤?cè)タ?,不到一月,小ke已經(jīng)掙了一萬有余了,存錢罐也快放不下來,再說也不太安全,因此小ke找個(gè)時(shí)間就去銀行(遠(yuǎn)程倉庫)把錢存起來了。以前小ke只能在家或離家比較近的地方才能使用自己的錢(因?yàn)榇驽X罐在家),如果存錢罐丟了就啥都沒有了,而現(xiàn)在把錢存在銀行里,走遍大江南北,都可以使用自己的錢,如果把密碼告訴別人,別人也可以來使用自己的錢,而且每筆消費(fèi)銀行都有流水單記錄清清楚楚,再也不擔(dān)心錢丟了。

Git的常用命令

在日常開發(fā)中我們最常用到的命令有g(shù)itclone、gitcheckout -b dev、gitadd、gitcommit、gitlog、gitdiff 、gitstatus 、gitpull 、gitpush。一個(gè)完整的項(xiàng)目開發(fā)流程大概如下,加入新團(tuán)隊(duì)接手一個(gè)項(xiàng)目后,在進(jìn)入開發(fā)前,先使用gitclone將遠(yuǎn)程版本庫的內(nèi)容克隆到本地,為了不污染master分支(保持穩(wěn)定版本,發(fā)布生產(chǎn)環(huán)境),我們使用gitcheckout -bdev創(chuàng)建一個(gè)新的dev分支進(jìn)行新功能的開發(fā),新功能進(jìn)入開發(fā)后,每天在本地寫的代碼都可以提交,這邊便于快速驗(yàn)證和團(tuán)隊(duì)成員check,使用gitadd .命令邊可以把所有的代碼從本地文件夾提交到暫存區(qū),使用gitcommit -m “this is a description"便可以將暫存區(qū)內(nèi)容提交到本地倉庫,使用gitstatus便可以查看工作區(qū)的狀態(tài)(是否有變動(dòng)、變動(dòng)內(nèi)容等),在本地倉庫使用gitlog看所有的提交日志,使用gitdiff看暫存區(qū)和工作區(qū)的差別,在本地倉庫差不多完事兒后,使用gitpush origin dev可以把本地的代碼提交到遠(yuǎn)程倉庫的dev分支了,使用gitmergemaster便可以把當(dāng)前dev分支的內(nèi)容合并到master分支。至此,所有有遠(yuǎn)程倉庫權(quán)限的人都可以查看代碼,寫新的代碼提交,因此每次進(jìn)行新的開發(fā)之前,都需要gitpull 拉起遠(yuǎn)程所有分支更新并合并到本地分支進(jìn)行開發(fā),保障始終在最新的內(nèi)容上做修改。

Git的沖突處理

在Git中多個(gè)人合作開發(fā),對(duì)同一個(gè)倉庫進(jìn)行內(nèi)容修改,多個(gè)開發(fā)分支并存,那么出現(xiàn)沖突是很正常的。對(duì)于同一個(gè)文件,不同的人拉取了不同的分支,基于這個(gè)文件去做改動(dòng)和修改,最后要把修改合并到master分支,那么應(yīng)該以哪個(gè)為準(zhǔn)呢?這個(gè)時(shí)候沖突就產(chǎn)生了。常用的沖突解決方案也很簡(jiǎn)單,根據(jù)git的反饋找到?jīng)_突文件,查看沖突內(nèi)容,決定要保留哪些、拋棄哪些,最后再重新提交就可以了。就像和朋友一起在地?cái)偵腺I烤串的時(shí)候,你說要3串牛肉串、他說要5串牛肉串、我說要10串牛肉串,那么沖突就產(chǎn)生了,老板到底聽誰的呢?解決方案就是我們?nèi)齻€(gè)人中的老板決定好要多少串,拋棄已存在的選擇,告訴攤販就可以了。

Git的撤銷與回退處理

撤銷與回退是非常正常的事情,比如我們?cè)谖⑿虐l(fā)錯(cuò)了消息,需要撤回啊、上線的某個(gè)版本有故障需要回退啊,再正常不過了。所以Git也提供這樣的機(jī)制,支持將修改后的文件撤銷回上一個(gè)版本、撤銷多余的提交等。

因?yàn)間it中的代碼可以存儲(chǔ)在各個(gè)區(qū)域,比如工作區(qū)、暫存區(qū)、本地倉庫、遠(yuǎn)程倉庫,所以每個(gè)地方git都提供了對(duì)應(yīng)的代碼回退策略。在工作區(qū)的代碼,也就是本地目錄的代碼,使用gitcheckout —就可以舍棄所有修改,使用gitcheckout — 666.txt就可以只舍棄666.txt這個(gè)文件。在暫存區(qū)的代碼,也就是只使用了gitadd命令進(jìn)行提交,使用gitreset HEAD可以丟棄所有代碼,使用gitreset HEAD666.txt就可以只舍棄666.txt這個(gè)文件。在本地倉庫的代碼因?yàn)橐呀?jīng)提交到倉庫里了,倉庫里存儲(chǔ)的就是代碼變更記錄,只能回退到某一次的修改了,使用gitlog可以獲取所有的提交并找到自己想要回退的commitID,使用gitreset -hard <commitID>可以回退到你想要的某個(gè)版本,使用gitreset —hardHEAD^回退到最新的一次提交。當(dāng)你的代碼提交到遠(yuǎn)程倉庫后,和在本地倉庫一樣的思路只能回退某個(gè)版本了,使用gitlog可查看所有的提交記錄,使用gitreset —hard <commitID>或使用gitrevert <commitID>回退到某次提交,最后使用gitpush origin HEAD —force強(qiáng)制提交。

長(zhǎng)江后浪推前浪,一浪更比一浪強(qiáng),掌握了扎實(shí)的git知識(shí)后,便可以將git工具使用游刃有余,更高效的coding,來吧,乘風(fēng)破浪的程序后浪們,talkis cheap ,show me the code~~



標(biāo)簽:
欧美性大战XXXXX久久久√,国产无遮挡裸体免费视频网站 ,久99久女女精品免费观看69堂,五月综合激情婷婷六月,国自产精品手机在线观看视频,欧美色爱综合网,国产精品三级国产AV,免费黄色高清无码,**a免费视频毛片,亚洲AV永久无码精品无码四虎
国产AA无码视频| 国产精品第一区揄拍| 国产AV成人无码精品网站| 91视频综合网| 亚洲va成无码人在线观看| 无遮挡高潮国产免费观看| 免费A级毛片在线播放不收费| DY888午夜国产精品亚洲 | 亚洲AV无码成人精品区狼人影院| 亚洲精品自产拍在线观看| 99视频在线精品国自产拍| 国产精品h片在线播放| 国产精品特级毛片一区二区| 在线日韩AV永久免费观看| 高清黄色无码网站| 久久综合福利| 无码中文字幕加勒比一本二本| 少妇人妻AV无码专区| 中文无码制服丝袜人妻AV| 毛片视频在线免费观看| 亚洲成av人无码中文字幕| 亚洲国产日韩a在线播放| 非洲黑人吊巨大VS亚洲女| 亚洲成AV人片在线观看无码不卡| 午夜欧美日韩在线视频播放| 久久福利青草精品资源站免费| 亚洲国产一级毛片| 在线视频日韩欧美| 国产精品视频第一区二区三区 | 久久精品国产亚洲av蜜臀| 国产精品久人妻精品| 亚洲日韩欧美一区二区三区| 久热无码中文视频在线| 亚洲真人无码永久在线观看| 国产精品无码久久综合网| 久久久久亚洲AV无码去区首| av老司机亚洲精品天堂| 久久影视午夜福利| 亚洲线精品一区二区三区四区 | 婷婷综合另类小说色区| 最新大伊香蕉精品视频在线|