Git--使用1

Linux項目開始後,絕大多數的Linux內核維護工做都花在了提交補丁和保存歸檔的繁雜事物上(1991——2002年間)。到2002年,整個項目組開始啓用分佈式版本控制系統BitKeeper來管理和維護代碼。到2005年的時候,開發BitKeeper的商業公司同Linux內核開發社區的合做關係結束,他們收回了無償使用BitKeeper的權力。這就使得Linux開源社區不得不開發了本身的版本控制軟件Git。linux

其餘系統在每一個版本中記錄着各個文件的具體差別git

Git保存每次更新的文件快照github

這是Git與其餘版本控制系統的主要差異,其餘版本控制系統節省了磁盤空間,但增長了計算量;Git是都保存了,由於磁盤原來越便宜。算法

在保存到Git以前,全部數據都要進行內容的校驗和(checksum)計算,並將此結果做爲數據的惟一標識和索引。Git使用SHA-1算法計算數據的校驗和,經過對文件的內容或目錄的結構計算出一個SHA-1哈希值,做爲指紋字符串。該字符由40個十六個進制字符(0-9及a-f)組成,看起來就像是:數據庫

首先安裝git,我是在ubuntu下,因此輸入命令:ubuntu

$sudo apt-get install git-corevim

OK!此時應該git成功安裝,查看git版本:安全

$git --version分佈式



一:獲取項目的git倉庫:this


1)從當前目錄初始化:

$git init

建立了一個空的git倉庫:


若是這個git倉庫已經初始化過了,則提示exist:


若是成功建立一個空的git倉庫能夠看到在當前目錄下出現一個.git目錄,這個就是倉庫了!


如今偷窺一下.git目錄下都有什麼:


2)從現有倉庫克隆:

克隆倉庫的命令爲git clone [url]。好比,要克隆Ruby語言的Git代碼倉庫Grit,能夠用下面的命令:

$git clone git://github.com/schacon/grit.git

這時在當前目錄下建立一個名爲「grit」的目錄,其中內含一個.git目錄,並從同步後的倉庫中拉出全部的數據,取出最新版本的文件拷貝。若是想本身指定目錄的名字:

$git clone git://github.com/schacon/grit.git mygrit

得到Linux2.6內核源碼:


若是使用git clone --bared則會只clone .git倉庫,而不會clone working directory和staging area。下面是對比,linux-kernel是使用git clone獲得的,my-linux是使用git clone --bared獲得的



二:新加文件到index中,使得git能夠跟蹤它:


git有3個區域,分別是:

  • working directory
  • staging area
  • repository

任何一個git裏的文件都有三種狀態:

  • 已修改(修改了某個文件,可是沒有提交)
  • 已暫存(把修改的文件放在下次提交時要保存的清單中)
  • 已提交(該文件已經安全地保存在本地數據庫中了)

基本的Git工做流以下:
  1. 在工做目錄中修改某些文件
  2. 對這些修改了的文件做快照,並保存到暫存區
  3. 提交更新,將保存在暫存區域的文件快照轉儲到git目錄中
工做目錄下面的全部文件都不外乎這兩種狀態:已跟蹤或未跟蹤。已跟蹤的文件是指原本就被歸入版本控制管理的文件,在上次快照中有它們的記錄,工做一段時間後,它們的狀態多是未更新的,已修改或者已放入暫存區。而全部其餘文件都屬於未跟蹤文件。它們既沒有上次更新時的快照,也不在當前的暫存區裏。初次克隆某個倉庫時,工做目錄中的全部文件都屬於已跟蹤文件,且狀態爲未修改。

使用git status檢查當前文件狀態:
$git status


說明沒有跟蹤任何文件

用vim修改一下工做目錄下的main.c文件,再將文件git add到staging area,而後:

$git add .


git add+要跟蹤文件名,能夠看到這裏多了一個index文件,這就是那個staging area。再次運行git status


能夠看到main.c文件已經被跟蹤,並處於暫存狀態。


三:提交


而後再git commit進行提交,把數據提交到git倉庫中:

$git commit -m "this is first commit"

注意這裏經過-m 選項加一個註釋,這樣你就能夠提交你的數據到git倉庫了,也能夠把兩個步驟合併文一個步驟:

$git commit -a -m "this is first commit"

git有兩個配置文件,一個在$HOME下,是全局的,設置時加--global,另外一個在倉庫配置文件裏。

$git config 

設置全局的:


本地的:

相關文章
相關標籤/搜索