學(xué)AI,好工作 就找北大青鳥
關(guān)注小青 聽課做題,輕松學(xué)習(xí)
周一至周日
4000-9696-28

乘風破浪的程序員們必備知識:git全方位學(xué)習(xí)

來源:北大青鳥總部 2020年07月14日 11:10

摘要: 乘風破浪的程序員們必備知識:git全方位學(xué)習(xí)
工欲善其事必先利其器,對于乘風破浪的程序員后浪們來說,最基礎(chǔ)也最重要的工具便是Git了。Git是程序員代碼的托管平臺,與同事一起協(xié)作辦公的工具,代碼變更的記錄存儲,所以Git知識的掌握非常重要,利用好工具也能更好的服務(wù)于工作。大家今天有福利了,因為今天我們會詳細的給大家介紹Git相關(guān)知識,全方位的讓你掌握Git~
本文介紹的內(nèi)容包含Git初階之Git是什么?、Git初階之Git的理論基礎(chǔ)、Git初階之Git的常用基礎(chǔ)命令、Git中階之沖突處理、Git高階之回退。
Git是什么?
Git是一個分布式版本控制系統(tǒng),存儲文件內(nèi)容和文件變更記錄。所謂分布式是相對于集中式而言的,集中式是有一臺中心服務(wù)器,所有的文件都存儲在上面,這樣出現(xiàn)的問題是如果這個服務(wù)器宕機了或壞掉了,那么所有的文件都沒了。分布式就是去中心化,每臺服務(wù)器都可以存儲項目內(nèi)容,這樣即使某一臺壞掉了,其他的人還可以從別的服務(wù)器去拷貝獲取內(nèi)容。所謂版本控制系統(tǒng)就是存儲代碼、文檔等內(nèi)容,并且把每次內(nèi)容的變更詳情都清晰的記錄下來。常用的Git工具有Github、Gitlab、Gitee等。Git的分布式文件系統(tǒng)概念就好像是在一個家庭里把錢全交給老婆管,每一次的進賬出賬全以本本記錄下來,老婆如果跟著別人跑了或者自己去炒股,那么所有的錢都沒了,但如果是家里每個人都管一部分,這個即使老婆這部分沒了,老公那剩余的錢還可以支撐整個家庭,而每一次錢的變動(比如增加多少、花在什么地方、誰花的)全都清清楚楚記錄下來。


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



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



Git的沖突處理
在Git中多個人合作開發(fā),對同一個倉庫進行內(nèi)容修改,多個開發(fā)分支并存,那么出現(xiàn)沖突是很正常的。對于同一個文件,不同的人拉取了不同的分支,基于這個文件去做改動和修改,最后要把修改合并到master分支,那么應(yīng)該以哪個為準呢?這個時候沖突就產(chǎn)生了。常用的沖突解決方案也很簡單,根據(jù)git的反饋找到?jīng)_突文件,查看沖突內(nèi)容,決定要保留哪些、拋棄哪些,最后再重新提交就可以了。就像和朋友一起在地攤上買烤串的時候,你說要3串牛肉串、他說要5串牛肉串、我說要10串牛肉串,那么沖突就產(chǎn)生了,老板到底聽誰的呢?解決方案就是我們?nèi)齻€人中的老板決定好要多少串,拋棄已存在的選擇,告訴攤販就可以了。
Git的撤銷與回退處理
撤銷與回退是非常正常的事情,比如我們在微信發(fā)錯了消息,需要撤回啊、上線的某個版本有故障需要回退啊,再正常不過了。所以Git也提供這樣的機制,支持將修改后的文件撤銷回上一個版本、撤銷多余的提交等。
因為git中的代碼可以存儲在各個區(qū)域,比如工作區(qū)、暫存區(qū)、本地倉庫、遠程倉庫,所以每個地方git都提供了對應(yīng)的代碼回退策略。在工作區(qū)的代碼,也就是本地目錄的代碼,使用gitcheckout —就可以舍棄所有修改,使用gitcheckout — 666.txt就可以只舍棄666.txt這個文件。在暫存區(qū)的代碼,也就是只使用了gitadd命令進行提交,使用gitreset HEAD可以丟棄所有代碼,使用gitreset HEAD666.txt就可以只舍棄666.txt這個文件。在本地倉庫的代碼因為已經(jīng)提交到倉庫里了,倉庫里存儲的就是代碼變更記錄,只能回退到某一次的修改了,使用gitlog可以獲取所有的提交并找到自己想要回退的commitID,使用gitreset -hard <commitID>可以回退到你想要的某個版本,使用gitreset —hardHEAD^回退到最新的一次提交。當你的代碼提交到遠程倉庫后,和在本地倉庫一樣的思路只能回退某個版本了,使用gitlog可查看所有的提交記錄,使用gitreset —hard <commitID>或使用gitrevert <commitID>回退到某次提交,最后使用gitpush origin HEAD —force強制提交。



長江后浪推前浪,一浪更比一浪強,掌握了扎實的git知識后,便可以將git工具使用游刃有余,更高效的coding,來吧,乘風破浪的程序后浪們,talkis cheap ,show me the code~~  
熱門班型時間
人工智能就業(yè)班 即將爆滿
AI應(yīng)用線上班 即將爆滿
UI設(shè)計全能班 即將爆滿
數(shù)據(jù)分析綜合班 即將爆滿
軟件開發(fā)全能班 爆滿開班
網(wǎng)絡(luò)安全運營班 爆滿開班
報名優(yōu)惠
免費試聽
課程資料
官方微信
返回頂部
培訓(xùn)課程 熱門話題 站內(nèi)鏈接