三 Git 倉庫
1.1Git 基本概念
在Git中,我們將需要進行版本控制的文件目錄叫做一個倉庫(repository),每個倉庫可以簡單理解成一個目錄,這個目錄里面的所有文件都通過Git來實現版本管理,Git都能跟蹤並記錄在該目錄中發生的所有更新。
現在我們已經知道什么是repository(縮寫repo)了,假如我們現在建立一個倉庫(repo),那么在建立倉庫的這個目錄中有一個“.git”的文件夾。這個文件夾非常重要,所有的版本信息,更新記錄,以及Git進行倉庫管理的相關信息
全部保存在這個文件夾里面。所以,不要修改/刪除其中的文件,以免造成數據的丟失。
進一步的講解請參考下面一張圖,大概展示出了我們需要了解的基本知識。
根據上面的圖片,下面給出了每個部分的簡要說明:
- Directory:使用Git管理的一個目錄,也就是一個倉庫,包含我們的工作空間和Git的管理空間。
- WorkSpace:需要通過Git進行版本控制的目錄和文件,這些目錄和文件組成了工作空間,除了.git之外的都屬於工作區。
- .git:存放Git管理信息的目錄,初始化倉庫的時候自動創建。
- Index/Stage:暫存區,或者叫待提交更新區,在提交進入repo之前,我們可以把所有的更新放在暫存區。
- Local Repo:本地倉庫,一個存放在本地的版本庫;HEAD會只是當前的開發分支(branch)。
- Stash:是一個工作狀態保存棧,用於保存/恢復WorkSpace中的臨時狀態。
有了上面概念的了解,下面簡單介紹倉庫的文件結構。
該目錄下有可能還有其他文件,但這是一個全新的 git init 生成的庫,所以默認情況下這些就是你能看到的結構。新版本的 Git 不再使用 branches 目錄,description 文件僅供 GitWeb 程序使用,所以不用關心這些內容。config 文件包含了項目特有的配置選項,info 目錄保存了一份不希望在 .gitignore 文件中管理的忽略模式 (ignored patterns) 的全局可執行文件。hooks 目錄保存了客戶端或服務端鈎子腳本。
另外還有四個重要的文件或目錄:HEAD 及 index 文件,objects 及 refs 目錄。這些是 Git 的核心部分。
- objects 目錄存儲所有數據內容
- refs 目錄存儲指向數據 (分支) 的提交對象的指針,里面即有stash棧指針以及tag等
- HEAD 文件指向當前分支
- index 文件保存了暫存區域信息
1.2 簡單的代碼提交流程
這里不對每一條命令做詳盡的解釋,這些命令或類似命令貫穿我們順利的一個完整提交,關於其他情況以及這些命令的詳細解釋留待后面敘述。
(1)git status //查看工作區代碼相對於暫存區的差別,
(2)git add . // 將當前目錄下修改的所有代碼從工作區添加到暫存區 . 代表當前目錄
(3)git commit -m “commit-message” //將暫存區的代碼提交到本地版本庫
(4)git push origin master // 將本地版本庫推送到遠程服務器,origin是遠程主機,master表示是遠程服務器上的master分支,分支名是可以修改的。