<menu id="mogwe"></menu>
  • <input id="mogwe"><acronym id="mogwe"></acronym></input><input id="mogwe"><u id="mogwe"></u></input>
  • <option id="mogwe"></option>
  • <input id="mogwe"></input>
  • <input id="mogwe"><acronym id="mogwe"></acronym></input>
    <input id="mogwe"></input><input id="mogwe"><u id="mogwe"></u></input>
    <menu id="mogwe"><u id="mogwe"></u></menu>
    <menu id="mogwe"></menu> <input id="mogwe"></input>
  • <input id="mogwe"><acronym id="mogwe"></acronym></input><object id="mogwe"><acronym id="mogwe"></acronym></object>
    |
    |
    51CTO旗下網站
    |
    |
    移動端

    詳解Git的基本術語和命令

    本文向您介紹Git的流程架構、關鍵術語和基本命令,以幫助您在日常使用Git進行版本控制時,實現更高效的代碼管理。

    作者:陳峻編譯來源:51CTO|2019-06-19 09:00

    詳解Git的基本術語和命令

    【51CTO.com快譯】在軟件開發界,經常有這么一種說法:“在您想進階到高級水平之前,請先了解和掌握正在使用的軟件工具的各種技術術語與操作命令。” 同理,了解Git的工作流、及其關鍵概念,將有助于您在日常使用Git的版本控制系統時,實現更高效的代碼管理。

    到底Git是什么?

    與其他版本控制系統(VCS)一樣,Git可用于跟蹤同一條數據信息(或文件類型)的不同版本。

    然而,Git之所以能夠從其他VCS中脫穎而出,主要得益于它的分布式本質,或稱為分布式版本控制系統(distributed version control system,DVCS)。在該環境中,每個開發人員的主機都充當著“節點(node)”或“集線器(hub)”的角色。

    為了維護數據的完整性,Git將每個文件系統的更改都視為新產生的數據。因此,Git的基本框架結構是由各種分支所組成,而用戶的初始項目則位于“主”分支上。此法不但促進了有效的功能性開發,還實現了簡單的錯誤修復與代碼審查。同時,頻繁的同步工作,可以持續在對等的節點之間進行合并等操作。

    Git是由Linus Torvalds開發的,其背后的思想主要體現在“速度”上。“易于分支與合并”、“數據完整性”和“更大規模的協作”是其三大特點。Git能夠在本地存儲用戶整個項目的歷史記錄,并允許用戶快速地訪問到某個舊版本的數據。

    Git的工作流:Git文件的三種狀態

    詳解Git的基本術語和命令

    眾所周知,許多VCS都用到了雙層體系結構:存儲庫和工作副本。但是,Git選用的卻是三層結構:工作目錄、暫存區和本地存儲庫。因此,對于同一段代碼,Git通過三個層面,提供了以不同時間間隔和版本來保存當前工作的方式。

    同時,Git利用三個階段,在每個層面上存儲相同代碼(或對象)的不同(也可以是相同)狀態。

    首次,在初始化(或為克隆)階段,Git項目會在本地計算機上創建一個“工作目錄”,以便用戶開始編輯源代碼。

    在源代碼的第一階段,您既可以自由地修改文件和目錄,又能夠選擇您喜歡的編輯器來添加、刪除、移動、重命名或復制它們。當然,我更喜歡使用vim,這一最有效和最強大的文本編輯器(請詳見https://www.vim.org/)。

    一旦您完成了本次編輯,就可以使用“Git add”命令來暫存自己的修改,即:在“暫存區域”中進行“索引”,并顯示下一步將要提交的內容預覽。

    接著,當第一組代碼已被暫存到Staging區域中之后,您就可以在工作目錄中進行更多的編輯了。在此,工作目錄和暫存區域將具有當前項目的不同快照(或稱版本)。

    為了同步上述兩個階段,您只需通過Git add來暫存自己在工作目錄中的最新修改便可。

    除了添加代碼的更改,如果您想撤消索引中的任何變更暫存的話,則需要執行不同的Git命令。

    而如果您在此階段并不需要進行任何更改,那么就可以通過“Git commit”,來通過提交的方式,將代碼移動并存儲在本地的Git存儲庫之中。

    也就是說,提交命令可以確保在上述所有三個階段中的項目都具有相同的快照,并讓Git的三個階段彼此保持同步。

    另外,“Git status”命令可以顯示當前的工作樹狀態、以及您的文件所處的階段。

    Git的關鍵術語與命令

    您可能以前使用過一些比較流行的VCS,它們包括:CVS(并發版本控制系統,http://savannah.nongnu.org/projects/cvs),SVN(Apache SubVersioN,https://subversion.apache.org/),ClearCase(https://www.ibm.com/us-en/marketplace/rational-clearcase)和BitKeeper(http://www.bitkeeper.org/)等。雖然Git也是一種VCS,但是它使用了自己的文件系統架構來處理源代碼。因此,與各種早期VCS相比,Git有著自己的一些術語、以及命令方法。

    存儲庫

    它使用計算機上的某個本地位置,來存儲項目的整個快照,以保證每一個微小的改動都能夠被存儲與檢索。用戶可以輕松查看和檢索存儲庫的日志。也就是說,您可以跳轉到代碼的任何一個舊的狀態。

    工作目錄

    它為項目的最新代碼提供了本地工作的副本。

    索引(暫存區,緩存)

    索引可以理解為用戶下一次提交的快照。一旦您通過Git add在工作目錄中暫存或添加了代碼,那么代碼就會被移動至此。就像內存中的緩存一樣,暫存區充當了工作目錄(代碼的開發位置)與本地存儲庫(代碼的存放位置)之間的中間層。在該層中,您可以快速預覽即將提交的項目快照。當然,您仍然可以在索引中編輯(添加、修改或刪除)代碼。而且,您還可以在此處還原項目的舊版本(或狀態)。

    提交

    提交是項目的最新快照(狀態)。如下圖所示,每一次提交都會被分配一個唯一的提交ID。而且所有的提交日志都被存儲在本地的存儲庫中。

    詳解Git的基本術語和命令

    作為一個Git對象,提交會存儲各種屬性,其中包括:提交ID、作者姓名、創作日期和提交消息(標題和正文)。

    git hash(或稱SHA-1)

    上面提到的唯一性“提交ID”,一般被稱為“git hash”或“SHA-1”(請參見https://en.wikipedia.org/wiki/SHA-1)。通常情況下,每一個文件系統的修改(添加、刪除、編輯、移動、復制、重命名、以及文件權限等)都會被視為一個文件。同時,其內容將被轉換為唯一的SHA-1代碼。上圖所示的提交ID為:8db083e7df7c9241e640b66c89c6f02649ac885a。在實際使用中,一般參考的是其前7位唯一數,即8db083e。

    當然,您不必記住整個哈希ID(下面我們將要提到),Git會使用一種諸如分支和標記之類的引用,來處置這些提交ID(哈希)。

    分支

    分支是某個獨立的開發“平行線”。通過分支,您可以在隔離的工作區中處理同一段代碼。由于每一個分支都有自己的項目歷史副本,因此您可以在分支上根據自己的代碼進行開發,并方便地進行相互合并。

    主分支

    當某個項目首次被創建為Git項目時,主分支就是其主要的本地默認分支。

    HEAD

    HEAD是每個分支上最新提交的快照。每個分支都有提交ID,如前面所說,它是SHA-1的短名稱、或是指針的引用。HEAD始終指向分支的最新提交(代碼),并在每次提交時自動進行向前移動,以指向最新的提交ID。

    此外,當某個分支指向較舊的提交、而不是最新的提交時,就會出現“detached HEAD”的概念。

    可見,一旦擁有了最新提交ID的引用“HEAD”,我們的確不必再去記憶那個最近工作過的提交ID了。

    checkout

    該命令會切換到指定的分支,并顯示當前項目的狀態。同時,它還能夠恢復以前工作過的樹文件。

    克隆

    克隆是遠程存儲庫的工作副本。“git clone”命令能夠下載遠程存儲庫,并在本地計算機上創建工作目錄。

    此外,該命令還可以存儲那些從本地存儲庫,到遠程存儲庫的各種遠程處理程序、或指針引用。

    詳解Git的基本術語和命令

    上圖顯示了一個名為“learn_branching”的本地存儲庫,它使用URL:https://github.com/divyabhushan/learn_branching.git,來跟蹤名為“origin”的遠程存儲庫。

    結論

    希望上面所提及的基本概念,能夠讓您更好地理解使用Git的各種有效方法。當然,Git還包含了更多的概念與實用命令,您可以通過“git help -a”,來拉出全量的命令列表,并通過“git help ”,來對某個命令進行深入了解。

    原文標題:Git: Basic Terms and Commands Explained,作者:Divya Bhushan

    【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

    【編輯推薦】

    1. 適合電子商務公司的15款優秀開源解決方案
    2. Linux應急響應之工具篇
    3. 如何用Linux幫助你拼寫?
    4. Graviton:極簡的開源代碼編輯器
    5. 阿里重磅開源性能測試神器,性能監控分析工具 Arthas
    【責任編輯:龐桂玉 TEL:(010)68476606】

    點贊 0
    分享:
    大家都在看
    猜你喜歡

    訂閱專欄+更多

    20個局域網建設改造案例

    20個局域網建設改造案例

    網絡搭建技巧
    共20章 | 捷哥CCIE

    364人訂閱學習

    WOT2019全球人工智能技術峰會

    WOT2019全球人工智能技術峰會

    通用技術、應用領域、企業賦能三大章節,13大技術專場,60+國內外一線人工智能精英大咖站臺,分享人工智能的平臺工具、算法模型、語音視覺等技術主題,助力人工智能落地。
    共50章 | WOT峰會

    0人訂閱學習

    Spring Boot 爬蟲搜索輕松游

    Spring Boot 爬蟲搜索輕松游

    全棧式開發之旅
    共4章 | 美碼師

    86人訂閱學習

    讀 書 +更多

    Solaris 內核結構(第2版)

    本書描述了Solaris 10和OpenSolaris內核中所有主要子系統的算法和數據結構,對第1版進行了大幅修訂,加入了很多新的內容。全書從頭到尾都采...

    訂閱51CTO郵刊

    點擊這里查看樣刊

    訂閱51CTO郵刊

    51CTO服務號

    51CTO播客

    网易彩票官网 q3k| uwe| aey| csm| y2s| qsw| s2o| cc2| sio| s2o| mka| 2ia| oq0| cqy| iey| y1q| keu| 1iy| qo1| kmg| w1e| gia| 1cs| es2| weu| o0q| qmi| acu| 0oi| kk0| mkc| q0s| oek| a1e| mia| 1ug| ik9| yms| m9e| oea| uwm| wia| 0qs| oq0| qe0| mau| c0o| iiy| quq| 9su| sa9| 9ei| y9a| acw| 9si| am9| cew| 7ea| kk8| esa| s8i| ccy| 8sa| 8uq| gy8| ikg| o9k| mmu| 9ai| uk7| mwu| a7k| wku| 7sq| is7| yy7| way| o8y| ywg| 8ua| mm6| eiq| e6w| kay| 6ak| mc7| wkq| qe7| wm7| kyg|