自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解Git的基本術(shù)語和命令

譯文
系統(tǒng) Linux 開源
本文向您介紹Git的流程架構(gòu)、關(guān)鍵術(shù)語和基本命令,以幫助您在日常使用Git進(jìn)行版本控制時,實現(xiàn)更高效的代碼管理。

詳解Git的基本術(shù)語和命令

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

到底Git是什么?

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

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

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

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

Git的工作流:Git文件的三種狀態(tài)

詳解Git的基本術(shù)語和命令

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

同時,Git利用三個階段,在每個層面上存儲相同代碼(或?qū)ο?的不同(也可以是相同)狀態(tài)。

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

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

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

接著,當(dāng)***組代碼已被暫存到Staging區(qū)域中之后,您就可以在工作目錄中進(jìn)行更多的編輯了。在此,工作目錄和暫存區(qū)域?qū)⒕哂挟?dāng)前項目的不同快照(或稱版本)。

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

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

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

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

另外,“Git status”命令可以顯示當(dāng)前的工作樹狀態(tài)、以及您的文件所處的階段。

Git的關(guān)鍵術(shù)語與命令

您可能以前使用過一些比較流行的VCS,它們包括:CVS(并發(fā)版本控制系統(tǒng),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,但是它使用了自己的文件系統(tǒng)架構(gòu)來處理源代碼。因此,與各種早期VCS相比,Git有著自己的一些術(shù)語、以及命令方法。

存儲庫

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

工作目錄

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

索引(暫存區(qū),緩存)

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

提交

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

詳解Git的基本術(shù)語和命令

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

git hash(或稱SHA-1)

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

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

分支

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

主分支

當(dāng)某個項目***被創(chuàng)建為Git項目時,主分支就是其主要的本地默認(rèn)分支。

HEAD

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

此外,當(dāng)某個分支指向較舊的提交、而不是***的提交時,就會出現(xiàn)“detached HEAD”的概念。

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

checkout

該命令會切換到指定的分支,并顯示當(dāng)前項目的狀態(tài)。同時,它還能夠恢復(fù)以前工作過的樹文件。

克隆

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

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

詳解Git的基本術(shù)語和命令

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

結(jié)論

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

原文標(biāo)題:Git: Basic Terms and Commands Explained,作者:Divya Bhushan

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

 

責(zé)任編輯:龐桂玉 來源: 51CTO
相關(guān)推薦

2012-03-19 10:41:15

JavaSocket

2021-01-27 05:44:00

Consul術(shù)語命令

2013-05-27 14:05:16

2015-07-28 10:21:23

git命令

2020-10-27 07:31:35

GitGit RevertGit Reset

2009-07-31 16:14:27

linux cd命令Linux基本命令

2023-12-08 11:05:00

GitLinux

2021-12-07 22:07:26

數(shù)據(jù)治理元管理

2010-01-06 11:24:27

Linux命令

2010-09-13 13:27:25

CSS濾鏡

2011-04-14 11:28:07

光纖

2010-06-02 14:28:23

SVN版本控制

2010-07-20 09:05:08

Perl類

2015-06-08 16:42:52

linux運維

2025-04-09 10:58:43

2023-09-13 14:47:34

性能測試開發(fā)

2020-11-05 11:50:48

Git命令Linux

2010-06-30 10:39:45

Linux SNMP

2010-03-08 16:55:32

Linux chgrpchown命令

2009-12-21 13:55:40

Linux軟件
點贊
收藏

51CTO技術(shù)棧公眾號