深入淺出學習GIT 一

2021-06-04 20:22:33 字數 1861 閱讀 7837

由於要換工作,新公司使用的是git,而以前只使用過clearcase 和 svn,因此git的學習迫在眉睫。

有關版本控制系統的基本概念,這裡就不介紹了。但是為了方便使用過svn的人理解git,還是有必要介紹下集中式版本控制系統和分布式版本控制系統的概念。

集中式版本控制系統有哪些?這裡先告訴大家,svn、cvs都屬於集中式版本控制系統。使用過svn的人都應該知道,這類系統有以下顯著的特點:(1)都有乙個單一的集中管理的伺服器,儲存所有檔案的修訂版本,軟體工程師都通過客戶端連線到這台伺服器,取出更新的檔案或者提交自己的更改。這類系統的缺點顯而易見,那就是過於依賴網路和中心伺服器。一旦網路不通,就無法提交更改的**;一旦伺服器發生故障,軟體工程師就無法協同工作。最糟糕的情況是,假如**伺服器的磁碟發生故障,並且沒有及時備份,可能導致丟失資料的風險。這種風險有可能直接導致專案的完整性遭到破快,協同工作難度加大。

由於集中式控制系統的前述缺點,分布式版本控制系統應運而生。git就是其中一種。客戶端並不只是提取最新版本的檔案快照,而是把原始的**倉庫完整地映象下來。這麼一來,任何一處協同工作用的伺服器發生故障,事後都可以用任何乙個映象出來的本地倉庫恢復。因為每一次的提取操作,實際上都是一次對**倉庫的完整備份。

為了快速的理解git的使用,我們從本地的乙個工作流程開始分析。

使用git時,一般都是先從已有的git倉庫轉殖出乙個新的映象倉庫到本地。如果git倉庫還不存在,需要從頭開始使用git管理專案,可以通過匯入所有檔案來建立新的git倉庫。svn 也是類似的。從這方面來講,git的使用和svn是類似的。

接下來,你可能希望使用git來提交你的更改,或與其他人協同工作,達到同步或更新。

這裡,我們先作個對比。前面提到,svn 實際上只有本地修改狀態和版本控制狀態。你只有把本地修改提交到伺服器上了,你的更改才是真正在專案中生效的。git呢?有哪些狀態?我們將會看到,git相比svn,多了乙個暫存的狀態。

在git 內都只有三種狀態:已提交(committed),已修改(modified)和已暫存(staged)。

已提交表示該檔案已經被安全地儲存在本地資料庫(.git倉庫)中了,即將快照index裡臨時儲存的內容被永久的提交到了git倉庫版本控制庫中;

已修改表示本地修改了某個檔案,但還沒有提交儲存,也就是說,檔案的修改還只是在working tree中了;

已暫存表示把已修改的檔案放在下次提交時要儲存的清單中,也就是說檔案儲存到了index快照中了,index被當作乙個本地的臨時儲存區域。

由此我們看到git 管理專案時,檔案流轉的三個工作區域:git 的本地資料目錄(.git倉庫),工作目錄以及暫存區

域(快照,也叫索引index)。

每個專案都有乙個git 目錄,它是git 用來儲存元資料和物件資料庫的地方。該目錄非常重要,每次轉殖

映象倉庫的時候,實際拷貝的就是這個目錄裡面的資料。

從專案中取出某個版本的所有檔案和目錄,用以開始後續工作的叫做工作目錄。這些檔案實際上都是從git

目錄中的壓縮物件資料庫中提取出來的,接下來就可以在工作目錄中對這些檔案進行編輯。

所謂的暫存區域只不過是個簡單的檔案,一般都放在git 目錄中。有時候人們會把這個檔案叫做索引文

件,不過標準說法還是叫暫存區域。

基本的git 工作流程如下所示:

1. 在工作目錄中修改某些檔案。

2. 對這些修改了的檔案作快照,並儲存到暫存區域。一般使用git add命令將修改的檔案儲存到快照中。

3. 提交更新,將儲存在暫存區域的檔案快照轉儲到git 目錄中。使用git commit命令提交自己的開發成果。

所以,我們可以從檔案所處的位置來判斷狀態:如果是git 目錄中儲存著的特定版本檔案,就屬於已提交狀

態;如果作了修改並已放入暫存區域,就屬於已暫存狀態;如果自上次取出後,作了修改但還沒有放到暫存區

域,就是已修改狀態。。

深入淺出 Git

如果你遇到這個場景,那你可能需要版本控制。版本控制最主要的功能就是追蹤檔案的變更。它將什麼時候 什麼人更改了檔案的什麼內容等資訊忠實地了已錄下來。每一次檔案的改變,檔案的版本號都將增加。除了記錄版本變更外,版本控制的另乙個重要功能是並行開發。軟體開發往往是多人協同作業,版本控制可以有效地解決版本的同...

深入淺出WPF學習 一

準備學習wpf,猶豫著沒有什麼學習的動力,發現公司有一本薄薄的 深入淺出wpf 就隨便拿來看看。在19頁中講的不是很明白,顧試著寫了個demo,只是為了學習。傳送門 xmlns xmlns x title mainwindow height 350 width 525 using system us...

深入淺出viewport 一

viewport對於移動瀏覽器上的網頁展示比較重要,那麼我們為什麼需要設定viewport呢?viewport到底是個什麼東東?讓我們一起來抽絲剝繭,一點點的揭露它的真相。這裡是翻譯的文章,沒有逐字翻譯。viewport的作用是限制頁面頂級的包含元素,這聽起來可能有點模糊不清。舉個例子,假設你有乙個...