1. 程式人生 > >2、Git學習筆記--Git基本介紹

2、Git學習筆記--Git基本介紹

一、版本控制介紹

1、版本控制系統的概念

版本控制是一種記錄一個或若干檔案內容變化,以便將來查閱特定版本修訂情況的系統。 實際上,可以對任何型別的檔案進行版本控制(例如寫作)。

2、版本控制系統的型別

(1)本地版本控制系統

許多人習慣用複製整個專案目錄的方式來儲存不同的版本,或許還會改名加上備份時間以示區別。 這麼做唯一的好處就是簡單,但是特別容易犯錯。 有時候會混淆所在的工作目錄,一不小心會寫錯檔案或者覆蓋意想外的檔案。為了解決這個問題,人們很久以前就開發了許多種本地版本控制系統,大多都是採用某種簡單的資料庫來記錄檔案的歷次更新差異(例如RCS)。


(2)集中化的版本控制系統

集中化的版本控制系統(Centralized Version Control Systems,簡稱 CVCS)能讓在不同系統上的開發者協同工作。 這類系統,諸如 CVS、Subversion 以及Perforce 等,都有一個單一的集中管理的伺服器,儲存所有檔案的修訂版本,而協同工作的人們都通過客戶端連到這臺伺服器,取出最新的檔案或者提交更新。 多年以來,這已成為版本控制系統的標準做法。

該系統每個人都可以在一定程度上看到專案中的其他人正在做些什麼。 而管理員也可以輕鬆掌控每個開發者的許可權

缺點是中央伺服器的單點故障(宕機)。 如果宕機一小時,那麼在這一小時內,誰都無法提交更新,也就無法協同工作。 如果中心資料庫所在的磁碟發生損壞,又沒有做恰當備份,毫無疑問你將丟失所有資料——包括專案的整個變更歷史,只剩下人們在各自機器上保留的單獨快照。 本地版本控制系統也存在類似問題,只要整個專案的歷史記錄被儲存在單一位置,就有丟失所有歷史更新記錄的風險。


(3)分散式版本控制系統

分散式版本控制系統(Distributed Version Control System,簡稱 DVCS)能避免伺服器宕機帶來的問題。 在這類系統中,像

Git、Mercurial、Bazaar 以及 Darcs 等,客戶端並不只提取最新版本的檔案快照,而是把程式碼倉庫完整地映象下來。 這麼一來,任何一處協同工作用的伺服器發生故障,事後都可以用任何一個映象出來的本地倉庫恢復。因為每一次的克隆操作,實際上都是一次對程式碼倉庫的完整備份。

多這類系統都可以指定和若干不同的遠端程式碼倉庫進行互動。籍此,你就可以在同一個專案中,分
別和不同工作小組的人相互協作。 你可以根據需要設定不同的協作流程,比如層次模型式的工作流,而這在以
前的集中式系統中是無法實現的。


二、Git簡史

1、Linux 核心開源專案有著為數眾廣的參與者。 絕大多數的 Linux 核心維護工作都花在了提交補丁和儲存歸檔的繁瑣事務上(1991-2002年間)。 到 2002 年,整個專案組開始啟用一個專有的分散式版本控制系統BitKeeper 來管理和維護程式碼。
2、到了 2005 年,開發 BitKeeper 的商業公司同 Linux 核心開源社群的合作關係結束,他們收回了 Linux 核心社群免費使用 BitKeeper 的權力。 這就迫使 Linux 開源社群(特別是 Linux 的締造者 Linus Torvalds)基於使用BitKeeper 時的經驗教訓,開發出自己的版本系統。 他們對新的系統制訂了若干目標:
(1)速度
(2)簡單的設計
(3) 對非線性開發模式的強力支援(允許成千上萬個並行開發的分支)
(4) 完全分散式
(5)有能力高效管理類似 Linux 核心一樣的超大規模專案(速度和資料量)
自誕生於 2005 年以來,Git 日臻成熟完善,在高度易用的同時,仍然保留著初期設定的目標。 它的速度飛快,極其適合管理大專案,有著令人難以置信的非線性分支管理系統

三、Git基礎

1、直接記錄快照,而非差異比較

(1)對待資料,其它版本控制系統(包括 Subversion 和近似工具)的主要工作重點是記錄版本間的資料差異


(2)對待資料,Git的主要工作重點是對當時的全部檔案製作一個快照並儲存這個快照的索引。為了高效,如果檔案沒有修改,Git 不再重新儲存該檔案,而是隻保留一個連結指向之前儲存的檔案。 Git 對待資料更像是一個快照流,把資料看作是對小型檔案系統的一組快照。


2、近乎所有操作都是本地執行

在 Git 中的絕大多數操作都只需要訪問本地檔案和資源,一般不需要來自網路上其它計算機的資訊。這也意味著你離線或者沒有 VPN 時,幾乎可以進行任何操作。

3、Git 保證完整性

(1)Git 中所有資料在儲存前都計算校驗和,然後以校驗和來引用。 這意味著不可能在 Git 不知情時更改任何檔案內容或目錄內容。 這個功能建構在 Git 底層,是構成 Git 哲學不可或缺的部分。 若你在傳送過程中丟失資訊或損壞檔案,Git 就能發現。

(2)Git 用以計算校驗和的機制叫做 SHA-1 雜湊(hash,雜湊)。 這是一個由 40 個十六進位制字元(0-9 和 a-f)組成字串,基於 Git 中檔案的內容或目錄結構計算出來。 SHA-1 雜湊看起來是這樣:


(3)Git 中使用這種雜湊值的情況很多,你將經常看到這種雜湊值。 實際上,Git 資料庫中儲存的資訊都是以檔案內容的雜湊值來索引,而不是檔名。

4、Git 一般只新增資料

(1)執行的 Git 操作,幾乎只往 Git 資料庫中增加資料。這使得Git很難以任何形式清除資料。

5、三種狀態

(1)Git 有三種狀態,你的檔案可能處於其中之一:已提交(committed)、已修改(modified)和已暫存(staged)。

a、 已提交表示資料已經安全的儲存在本地資料庫中。 

b、已修改表示修改了檔案,但還沒儲存到資料庫中。 

c、已暫存表示對一個已修改檔案的當前版本做了標記,使之包含在下次提交的快照中。

(2)由此引入 Git 專案的三個工作區域的概念:Git 倉庫、工作目錄以及暫存區域。


(1)Git 倉庫目錄是 Git 用來儲存專案的元資料物件資料庫的地方。 這是 Git 中最重要的部分,從其它計算機克隆倉庫時,拷貝的就是這裡的資料。

(2)工作目錄對專案的某個版本獨立提取出來的內容。 這些從 Git 倉庫的壓縮資料庫中提取出來的檔案,放在磁碟上供你使用或修改。

(3)暫存區域是一個檔案,儲存了下次將提交的檔案列表資訊,一般在 Git 倉庫目錄中。 有時候也被稱作`‘索引’',不過一般說法還是叫暫存區域。

(4)基本的 Git 工作流程如下:
a. 在工作目錄中修改檔案。
b. 暫存檔案,將檔案的快照放入暫存區域。
c. 提交更新,找到暫存區域的檔案,將快照永久性儲存到 Git 倉庫目錄。

四、命令列

1、安裝

具體步驟見書《Pro Git》或者是網上的各種教程,此處略。

2、使用者資訊

(1)當安裝完 Git 應該做的第一件事就是設定你的使用者名稱稱與郵件地址。 這樣做很重要,因為每一個 Git 的提交都會

使用這些資訊,並且它會寫入到你的每一次提交中,不可更改:

//
$ git config --global user.name "John Doe"
$ git config --global user.email [email protected]
//
(2)再次強調,如果使用了 --global 選項,那麼該命令只需要執行一次,因為之後無論你在該系統上做任何事
情, Git 都會使用那些資訊。 當你想針對特定專案使用不同的使用者名稱稱與郵件地址時,可以在那個專案目錄下運

行沒有 --global 選項的命令來配置。很多 GUI 工具都會在第一次執行時幫助你配置這些資訊。

3、文字編輯器

(1)Git 預設的編輯器是vim,不過也可以自己配置別的編輯器,如emacs。

4、檢查配置資訊

(1)如果想要檢查你的配置,可以使用 git config --list 命令來列出所有 Git 當時能找到的配置。

//
$ git config --list
core.symlinks=false
core.autocrlf=true
core.fscache=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
help.format=html
rebase.autosquash=true
http.sslcainfo=E:/Git/git_install/Git/mingw64/ssl/certs/ca-bundle.crt
……
//

(2)你可以通過輸入 git config <key>: 來檢查 Git 的某一項配置

//
$ git config user.name
wang
//

五、獲取幫助

1、若你使用 Git 時需要獲取幫助,有三種方法可以找到 Git 命令的使用手冊:

//
$ git help <verb>
$ git <verb> --help
$ man git-<verb>
//

2、例如,要想獲得 config 命令的手冊,執行

//
$ git help config
//

致謝

相關推薦

2建模學習筆記--知名軟體介紹

一、簡介 1、產品的造型設計需要設計人員具備兩項基本技能:一是手繪技術(Sketch);二是3D CAD一類的設計軟體。 2、簡單分類如下:【《犀牛建模入門》 2010寒假Rhinoceros課程全記錄 作者 王大川】 2D(平面)軟體:Photoshop、Ai、Cor

2Git學習筆記--Git基本介紹

一、版本控制介紹1、版本控制系統的概念版本控制是一種記錄一個或若干檔案內容變化,以便將來查閱特定版本修訂情況的系統。 實際上,可以對任何型別的檔案進行版本控制(例如寫作)。2、版本控制系統的型別(1)本地版本控制系統許多人習慣用複製整個專案目錄的方式來儲存不同的版本,或許還會

Git學習筆記--日常基本使用

ret 忽略文件 不可見 git學習 個人 fast 撤銷 其他人 交點 一、安裝Git   1、linux下安裝:     yum install -y git   2、windows下安裝:     從https://git-for-windows.gi

redis學習筆記01 — 基本介紹安裝配置及常用命令

redis——NoSQL的一種 為了解決高併發、高可用、高擴充套件、大資料儲存等一系列問題而產生的資料庫解決方案,就是NoSQL NoSQL,非關係型資料庫,全名:Not Only Sql,它不能代替關係型資料庫,只能作為關係型資料庫的一個良好補充。 redis 簡介 是使用

Git學習筆記——Git安裝

linux版本 輸入 技術分享 源碼安裝 彈出 版本 operator IT學習 user Git是目前世界上最先進的分布式版本控制系統(沒有之一)。 在Linux上安裝Git 首先,你可以試著輸入git,看看系統有沒有安裝Git: $ git The program

git 學習筆記 Git實踐

lena 清空 gitconfig 根據 引入 倉庫 git merge 圖片 多個 網上有很多教程,這裏我自己做下整理,省得有時忘記,有道是好記性不如爛博客! 先大概描述下Git的各種命令: git init

GIT學習筆記-GIT伺服器倉庫的搭建

伺服器:centos6.6 git版本:1.7.1(系統自帶版本) 1. 安裝git 可以直接安裝centos自帶的git su //先切換到root賬號 yum install curl-devel

Mysql學習筆記1-基本介紹基本增刪改查操作

Mysql介紹 MySQL 是一種資料庫,資料庫定義了儲存資訊的結構。以表的方式儲存資訊。 MySQL資料庫具有以下主要特點: 同時訪問資料庫的使用者數量不受限制; 支援大量資料查詢和儲存,M

Hadoop學習筆記—1.基本介紹與環境配置

一、Hadoop的發展歷史   說到Hadoop的起源,不得不說到一個傳奇的IT公司—全球IT技術的引領者Google。Google(自稱)為雲端計算概念的提出者,在自身多年的搜尋引擎業務中構建了突破性的GFS(Google File System),從此檔案系統進入分散式時代。除此之外,Google在

Oracle學習筆記基本查詢語句各子句用法

一、查詢語句的組成     select * from tname where 條件 group by colName having 條件 order by colName     這些子句的先後執行順序:     1):from 子句:內部從右往左,從後往前執行    

CSS學習筆記基本介紹

元素 ron 文件 組成 color styles clas sel 學習 1、簡介 層疊樣式表(Cascading Style Sheets,CSS)允許我們把樣式設置存儲在文件中,從而將內容與表現分離 當同一個 HTML 元素被不只一個樣式定義時,最終的樣式確定順序如下

HTML學習筆記基本介紹

空元素 描述 ron 情況 學習筆記 基本 使用 第一個 出現 超文本標記語言 (Hyper Text Markup Language,HTML)不是一種編程語言,而是一種標記語言,用一套標記標簽描述網頁 HTML 標記標簽又被稱為 HTML 標簽(HTML Tag),它是

Git學習筆記2——Git版本庫的創建

文件添加 不但 提交 linu 記錄 例子 blog 所有 out 創建一個版本庫非常簡單,首先,選擇一個合適的地方,創建一個空目錄: $ cd s: $ cd Git_Learing $ pwd s/Git_Learning pwd命令用於顯示當前目錄。在我的wind

Git學習筆記(2)之Git版本回退

.com 分享 nbsp class 文檔 行修改 通過 分享圖片 font     當我們成功將修改過的文件提交到了Git版本庫了之後,突然發現自己有一個問題改錯了,這個時候我們想回退到上一次的版本該怎麽辦呢?幸好Git記錄的是修改,這樣我們就能通過一些方法回退到修改之前

git學習筆記2-一些很重要又很初級的命令和技巧(霜之小刀)

git學習筆記2-一些很重要又很初級的命令和技巧(霜之小刀) 歡迎轉載和引用,若有問題請聯絡 若有疑問,請聯絡 Email : [email protected] QQ:2279557541 本文大量參考了《精通git》 第2版

Git 的工作區暫存區版本庫—— Git 學習筆記 15

Git 的工作區、暫存區、版本庫 大家都知道,在 Git 系統中有 “三棵樹” 的概念。 注意:“樹” 在這裡的意思是 “檔案集合”,而不是指特定的資料結構。 基本概念 樹 用途 HEAD(版本庫) 上一次提交的快照,下一次提交的父結點

Git學習筆記2——版本庫建立

什麼是版本庫? 版本庫又名倉庫,英文名repository,可以簡單理解成一個目錄,這個目錄裡面的所有檔案都可以被Git管理起來,每個檔案的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。 建立版本庫 第一步 選擇一個合適

Git學習筆記3——修改檔案檢視修改提交修改

修改檔案 我們已經成功地新增並提交了一個readme.txt檔案,現在,是時候繼續工作了,於是,我們繼續修改readme.txt檔案,改成如下內容: Git is a distributed version control system. Git is a fr

Git學習筆記11——配置Git搭建Git伺服器

忽略特殊檔案 有些時候,你必須把某些檔案放到Git工作目錄中,但又不能提交它們,比如儲存了資料庫密碼的配置檔案啦,等等,每次git status都會顯示Untracked files ...,有強迫症的童鞋心裡肯定不爽。 好在Git考慮到了大家的感受,這個問題解

Git學習筆記001.Git基本操作 on Mac

1. Git Initialization (1) Make a folder as your local repository. mkdir myRepository (2) Enter the