要點一覽:
· 1.Git 簡介 與 基本概念
· 2.Git 安裝
· 3.Git 初次使用的配置
· 總結
1.git 簡介 與 基本概念
· git簡介:
GIt 首先是一個軟件,一個實現"版本控制管理"軟件,關于版本控制的相關知識,可以參考本文后面
給出的鏈接。所謂版本管理軟件,簡單來說,就是一個進行備份管理的軟件,并且方便進行備份回溯等操作的軟件!
實際上我們在實際工作中已經接觸過版本管理的概念了!
//比如:我們在編寫程序時,經常會這么做!
$vi hello.c
//在要進行某些修改之前,同時為了不影響到原有文件,我們通常會這么做
$cp hello.c 1-hello.c
//之后,對 1-hello.c 進行編輯
$vi 1-hello.c
這些實際上就是在進行版本管理,只是這里有個專門的軟件,也提供了更豐富的功能的軟件實現這樣的管理!
我們所介紹的git,這是繼Linux之后linus的又一偉大的貢獻。產生的背景正是源于對linux內核開源個項目的維護。
linux內核開源項目的維護,在2002 - 2005 年使用Bitkeeper 的分布式本地系統。 但是2005 年合作
關系結束后 BitKeeper的公式回收了免費使用的權利。這使得Linus Torvalds 不得不吸取教訓,只有開發一套屬于
自己的版本控制系統才不至于重蹈覆轍。
這樣在消失一周之后,git誕生了,因其晦澀難懂,起初只有一些黑客在用 ,但是經過眾多開發者的努力,現在git
一杯全世界的程序員所使用!
Git的實現目標:
· 速度
· 簡單的設計
· 對非線性開發模式的強力支持(允許上千個并行開發的分支)
· 完全分布式
· 有能力高效管理類似 Linux 內核一樣的超大規模項目(速度和數據量)
自誕生于 2005 年以來,Git 日臻成熟完善,在高度易用的同時,仍然保留著初期設定的目標。它的速
度飛快,極其適合管理大項目,它還有著令人難以置信的非線性分支管理系統,可以應付各種復雜的項
目開發需求。
(注: Linus 花了一周時間寫出來的,Git 10 周年訪談:Linus 講述背后故事 - 博客 - 伯樂在線
上面的git的誕生的背景,那么要想實現對git的使用,必須對其基本的思想和概念有認識和了解!
· Git的思想和基本原理:
1.直接記錄快照,而非差異比較 (快照)
Git 和其他版本控制系統的主要差別在于,Git 只關心文件數據的整體是否發生變化,而大多數其他系統則只關心文件內容的具體差異。
2.近乎所有的操作都是本地執行(本地)
實際上操作的是git下來的本地代碼庫,待有網絡時,再更新到網絡。
3.時刻保持數據完整性(完整性)
git的設計哲學,git可以及時察覺到文件的變化。因為在保存到git之前,所有數據都要進行內容的校驗和(checksum)計算。并將此結果作為
數據的唯一標識和索引。
Git 使用 SHA-1 算法計算數據的校驗和,通過對文件的內容或目錄的結構計算出一個 SHA-1 哈希值,作為指紋字符串。該字串由 40 個十六
進制字符(0-9 及 a-f)組成,看起來就像是:
24b9da6552252987aa493b52f8696cd6d3b00373
Git 的工作完全依賴于這類指紋字串,所以你會經常看到這樣的哈希值。實際上,所有保存在 Git 數據庫中的東西都是用此哈希值來作索引的,而不是靠文件名。
git使用的是哈希值來索引文件,而不是靠文件名。
4.多數操作僅做添加數據(添加)
常用的 Git 操作大多僅僅是把數據添加到數據庫。因為任何一種不可逆的操作,比如刪除數據,都會使回退或重現歷史版本變得困難重重。
關鍵字: 快照 --- 本地 --- 完整性---添加
· git 實現版本原理原理
首先解釋一下上面涉及到的三個區域:
working directory (工作目錄)
staging area (暫存區域)
git directory (Git目錄)
Git目錄:
它是 Git 用來保存元數據和對象數據庫的地方。該目錄非常重要,每次克隆鏡像倉庫的時候,實際拷貝的就是這個目錄里面的數據。
如果 git clone 出來的話,就是其中 .git 的目錄;如果 git clone --bare 的話,新建的目錄本身就是 Git 目錄。
工作目錄:
從項目中取出某個版本的所有文件和目錄,用以開始后續工作的叫做工作目錄。這些文件實際上都是從 Git 目錄中的壓縮對象數據庫
中提取出來的,接下來就可以在工作目錄中對這些文件進行編輯。
暫存區域:(實際上就是 準備入庫的"文件清單")
所謂的暫存區域只不過是個簡單的文件,一般都放在 Git 目錄中。有時候人們會把這個文件叫做索引文件,不過標準說法還是叫暫存區域。
所謂的版本管理的實現就是在這幾個區域之間的數據交換。
通常基本操作流程:
1. 在"工作目錄"中修改某些文件。
2. 對修改后的文件進行快照,然后保存到"暫存區域"。
3. 提交更新,將保存在"暫存區域"的文件快照永久轉儲到" Git 目錄"中。
所以我們可以從文件所處的位置來判斷狀態:
如果是Git目錄中保存這的特定版本文件,就屬于"已提交狀態"
如果做了修改并以放入暫存區域,就屬于"已暫存狀態"
如果子上次取出后,做了修改但是還沒有放到暫存區域,就是"已修改狀態"
整個的流程是這樣的:
"工作目錄(修改)"--快照--->"暫存區域(清單)"--提交--->"Git 目錄"
2.Git 安裝
git安裝:
1.ubuntu 下安裝:
命令行輸入:
$sudo apt-get install git
2,windows 下安裝:
//msysgit.github.com/
包含了一個命令行的工具和圖形工具
下載自己的系統對應的版本進行安裝
3.Git 初次使用的配置
初次使用git時,需要做一些基本的配置!
可以進行配置的文件有三個層次的文件
(1).系統級別
/etc/gitconfig文件: 系統中對所用用戶都普遍適用的配置。
命令:
$git config --system
(2).用戶級別
~/.gitconfig文件:
用戶目錄下的配置文件,只適用該用戶。
命令:
$git config --global
(3).目錄級別
“工作目錄”下的“.git/config”文件,這里的配置只針對當前目錄有效。
每個級別的配置會覆蓋上層的相同配置。
下面我們來進行配置,主要是針對當前用戶的!
設計的信息主要是: 用戶名 和 用戶的郵件信息
配置的作用:
每次Git提交時,都會引用這兩條信息,說明是誰提交了更新,會隨更新內容一起!
查看配置信息:
命令主要是三條:
$git config --global user.name "名字"
$git config --global user.email "郵箱地址"
$git config --list
總結
(1).git的基本的實現的目標
(2).git的"三個區域"和文件的"三種狀態"
(3).git的基本操作流程
(5).git的安裝
(6).git的初始配置
參考鏈接:
[1].git 使用簡易指南