<progress id="uuezx"></progress>
<th id="uuezx"></th>
  • <li id="uuezx"><acronym id="uuezx"><cite id="uuezx"></cite></acronym></li>

    乘風破浪的程序員們必備知識:git全方位學習!

    工欲善其事必先利其器,對于乘風破浪的程序員后浪們來說,最基礎也最重要的工具便是Git了。Git是程序員代碼的托管平臺,與同事一起協作辦公的工具,代碼變更的記錄存儲,所以Git知識的掌握非常重要,利用好工具也能更好的服務于工作。大家今天有福利了,因為今天我們會詳細的給大家介紹Git相關知識,全方位的讓你掌握Git~

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

    Git是什么?

    Git是一個分布式版本控制系統,存儲文件內容和文件變更記錄。所謂分布式是相對于集中式而言的,集中式是有一臺中心服務器,所有的文件都存儲在上面,這樣出現的問題是如果這個服務器宕機了或壞掉了,那么所有的文件都沒了。分布式就是去中心化,每臺服務器都可以存儲項目內容,這樣即使某一臺壞掉了,其他的人還可以從別的服務器去拷貝獲取內容。

     

     

    所謂版本控制系統就是存儲代碼、文檔等內容,并且把每次內容的變更詳情都清晰的記錄下來。常用的Git工具有Github、Gitlab、Gitee等。Git的分布式文件系統概念就好像是在一個家庭里把錢全交給老婆管,每一次的進賬出賬全以本本記錄下來,老婆如果跟著別人跑了或者自己去炒股,那么所有的錢都沒了,但如果是家里每個人都管一部分,這個即使老婆這部分沒了,老公那剩余的錢還可以支撐整個家庭,而每一次錢的變動(比如增加多少、花在什么地方、誰花的)全都清清楚楚記錄下來。
     


     

    Git的理論基礎
     

    理論基礎1之基礎概念。在Git中最基礎的三個概念是工作區workspace、倉庫repository、暫存區Index。所謂工作區就是電腦上的本地文件和目錄,通過Git的版本控制,構成了工作區。所謂暫存區就是暫時存放代碼的地方。所謂倉庫就是存儲代碼的地方,包含本地倉庫和遠程倉庫,本地倉庫用于自己寫新代碼,寫好了先提交到暫存區,經過多次提交感覺差不多了,最后在提交到遠程倉庫。

     

    整體的工作流程就像是儲蓄,比如擺地攤的程序員小ke,他通過每天的辛苦勞動,每天的收錢罐(暫存區)都有對應的錢,辛苦忙完一天后,小ke會盤算每天的進賬,把錢放到家里的存錢罐(本地倉庫),擺地攤很掙錢?。ê??還寫什么代碼呢,擺攤去咯),不到一月,小ke已經掙了一萬有余了,存錢罐也快放不下來,再說也不太安全,因此小ke找個時間就去銀行(遠程倉庫)把錢存起來了。

     

    以前小ke只能在家或離家比較近的地方才能使用自己的錢(因為存錢罐在家),如果存錢罐丟了就啥都沒有了,而現在把錢存在銀行里,走遍大江南北,都可以使用自己的錢,如果把密碼告訴別人,別人也可以來使用自己的錢,而且每筆消費銀行都有流水單記錄清清楚楚,再也不擔心錢丟了。

     

     

    Git的常用命令
     

    在日常開發中我們最常用到的命令有gitclone、gitcheckout -b dev、gitadd、gitcommit、gitlog、gitdiff 、gitstatus  、gitpull 、gitpush。一個完整的項目開發流程大概如下,加入新團隊接手一個項目后,在進入開發前,先使用gitclone將遠程版本庫的內容克隆到本地,為了不污染master分支(保持穩定版本,發布生產環境),我們使用gitcheckout -bdev創建一個新的dev分支進行新功能的開發,新功能進入開發后,每天在本地寫的代碼都可以提交,這邊便于快速驗證和團隊成員check,使用gitadd .命令邊可以把所有的代碼從本地文件夾提交到暫存區,使用gitcommit -m “this is a description"便可以將暫存區內容提交到本地倉庫,使用gitstatus便可以查看工作區的狀態(是否有變動、變動內容等),在本地倉庫使用gitlog看所有的提交日志,使用gitdiff看暫存區和工作區的差別,在本地倉庫差不多完事兒后,使用gitpush origin dev可以把本地的代碼提交到遠程倉庫的dev分支了,使用gitmergemaster便可以把當前dev分支的內容合并到master分支。

     

    至此,所有有遠程倉庫權限的人都可以查看代碼,寫新的代碼提交,因此每次進行新的開發之前,都需要gitpull 拉起遠程所有分支更新并合并到本地分支進行開發,保障始終在最新的內容上做修改。
     



    Git的沖突處理

     

    在Git中多個人合作開發,對同一個倉庫進行內容修改,多個開發分支并存,那么出現沖突是很正常的。對于同一個文件,不同的人拉取了不同的分支,基于這個文件去做改動和修改,最后要把修改合并到master分支,那么應該以哪個為準呢?這個時候沖突就產生了。常用的沖突解決方案也很簡單,根據git的反饋找到沖突文件,查看沖突內容,決定要保留哪些、拋棄哪些,最后再重新提交就可以了。就像和朋友一起在地攤上買烤串的時候,你說要3串牛肉串、他說要5串牛肉串、我說要10串牛肉串,那么沖突就產生了,老板到底聽誰的呢?解決方案就是我們三個人中的老板決定好要多少串,拋棄已存在的選擇,告訴攤販就可以了。

     

     

    Git的撤銷與回退處理
     

    撤銷與回退是非常正常的事情,比如我們在微信發錯了消息,需要撤回啊、上線的某個版本有故障需要回退啊,再正常不過了。所以Git也提供這樣的機制,支持將修改后的文件撤銷回上一個版本、撤銷多余的提交等。

     

    因為git中的代碼可以存儲在各個區域,比如工作區、暫存區、本地倉庫、遠程倉庫,所以每個地方git都提供了對應的代碼回退策略。在工作區的代碼,也就是本地目錄的代碼,使用gitcheckout —就可以舍棄所有修改,使用gitcheckout — 666.txt就可以只舍棄666.txt這個文件。在暫存區的代碼,也就是只使用了gitadd命令進行提交,使用gitreset HEAD可以丟棄所有代碼,使用gitreset HEAD666.txt就可以只舍棄666.txt這個文件。

     

    在本地倉庫的代碼因為已經提交到倉庫里了,倉庫里存儲的就是代碼變更記錄,只能回退到某一次的修改了,使用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~~    


    上下文導航
    相關內容
    全國熱線

    0551-69117050

    咨詢服務熱線:8:00-23:00

    合肥一元教育咨詢有限公司版權所有 如有圖片侵權請及時聯系本站,將及時刪錯或更改

    皖ICP備13012660號-1

    在線咨詢
    電話咨詢
    Tel:0551-69117050
    微信

    掃一掃
    歡迎微信咨詢

    QQ咨詢
    返回頂部