成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解Git的基本術語和命令

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

詳解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】

 

責任編輯:龐桂玉 來源: 51CTO
相關推薦

2012-03-19 10:41:15

JavaSocket

2021-01-27 05:44:00

Consul術語命令

2013-05-27 14:05:16

2020-10-27 07:31:35

GitGit RevertGit Reset

2015-07-28 10:21:23

git命令

2009-07-31 16:14:27

linux cd命令Linux基本命令

2023-12-08 11:05:00

GitLinux

2021-12-07 22:07:26

數據治理元管理

2010-09-13 13:27:25

CSS濾鏡

2010-01-06 11:24:27

Linux命令

2011-04-14 11:28:07

光纖

2023-09-13 14:47:34

性能測試開發

2010-06-02 14:28:23

SVN版本控制

2010-07-20 09:05:08

Perl類

2015-06-08 16:42:52

linux運維

2010-06-30 10:39:45

Linux SNMP

2010-03-08 16:55:32

Linux chgrpchown命令

2020-11-05 11:50:48

Git命令Linux

2025-04-09 10:58:43

2009-04-14 09:35:33

.NETCLR術語
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 日韩成人免费视频 | 6080yy精品一区二区三区 | 色婷婷亚洲一区二区三区 | 成人欧美一区二区三区在线播放 | 欧美一区二区在线观看 | 黑人性hd| 久久精品国产一区二区 | 99热在线免费 | 亚洲性人人天天夜夜摸 | 欧美日韩中文字幕在线 | 日本亚洲精品成人欧美一区 | 91久久国产综合久久91精品网站 | 亚洲欧美精品一区 | 久久久亚洲成人 | 开操网 | 久久久精品网站 | 黄色在线观看网址 | 中文字幕国 | 欧美福利网站 | 欧美一区二区三区视频 | 国产日韩精品一区二区三区 | 欧美一级三级在线观看 | 日本免费网| 午夜亚洲| 亚洲欧洲在线视频 | 日韩在线观看一区 | 成人免费在线观看 | 日韩欧美国产一区二区三区 | 99久久免费精品视频 | 黑人巨大精品欧美一区二区免费 | 午夜激情国产 | www.日本三级 | 日韩欧美国产一区二区 | 国产日韩精品在线 | 中文字幕一区二区三区在线观看 | 91麻豆精品国产91久久久久久久久 | 欧美激情精品久久久久久免费 | 久久久精品视频一区二区三区 | 成人av资源在线 | 亚洲一区二区免费 |