git是什么?
git是一個開源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項目版本管理,也是Linus Torvalds為了幫助管理Linux內(nèi)核開發(fā)而開發(fā)的一個開放源碼的版本控制軟件。git與常用的版本控制工具SVN等不同,它采用了分布式版本庫的方。
簡而言之,git就是一個版本管理庫,也是一個版本管理工具,它的作用就是幫助我們記錄版本信息,以及修改內(nèi)容。git的結(jié)構(gòu)是分布式的資源庫,特點是沒有嚴格的服務(wù)器概念,每個單體都可作為資源庫。這個特點就讓我們?nèi)巳擞凶约旱膅it倉庫這件事變得容易實現(xiàn)。
為什么要用git?
提到版本控制,總會想起大學(xué)畢業(yè)時寫論文的場景,你電腦上的畢業(yè)論文一定出現(xiàn)過這番景象!
課設(shè)_初稿.doc 課設(shè)_修改1.doc 課設(shè)_修改2.doc 課設(shè)_修改3.doc 課設(shè)_完整版1.doc 課設(shè)_完整版2.doc 課設(shè)_完整版3.doc 課設(shè)_最終版1.doc 課設(shè)_最終版2.doc 課設(shè)_死也不改版.doc ... |
這就是最原始的版本控制方法,這種方式的缺點也是顯著的。
多個文件,保留所有版本時,需要為每個版本保存一個文件;
協(xié)同操作,多人協(xié)同操作時,需要將文件打包發(fā)來發(fā)去;
容易丟失,被刪除意味著永遠失去;
為了解決這個痛點,應(yīng)運而生了一批版本管理工具,如:git、svn等。其中l(wèi)inux當中最常用的當屬git,因此學(xué)會使用git是十分必要的。
git安裝和初次使用
git倉庫的構(gòu)建分兩種方式,一種是管理當前的代碼,給當前代碼創(chuàng)建一個git倉庫,這種需要初始化新倉庫;還有一種是用clone克隆一個遠程倉庫到自己當前目錄下,這種適合一群人維護一個倉庫,也是常見的方式。
本文只介紹第一種當前代碼的管理。
Ubuntu上安裝git
執(zhí)行sudo apt-get install git 進行g(shù)it安裝
elf@ubuntu:~/work/example/hello$?sudo apt-get install git |
創(chuàng)建版本庫
以下以用git管理/home/elf/work/example/hello/hello.c文件為示例,展示git的安裝和最簡單的流程
(1)git初始化
git初始化新倉庫,執(zhí)行g(shù)it init后會在當前目錄生成一個.git目錄
elf@ubuntu:~/work/example/hello$?git init |
(2)設(shè)置用戶名和郵箱
每當我們在一個新的git上,首先執(zhí)行g(shù)it config --global user.name "Your Name"創(chuàng)建個人git賬戶,執(zhí)行g(shù)it config --global user.email 創(chuàng)建賬戶郵箱。
以賬戶名為elf_li,郵箱elf_li@exmple.com為例操作
elf@ubuntu:~/work/example/hello$ git config --global user.name "elf_li" elf@ubuntu:~/work/example/hello$ git config --global user.email "elf_li@exmple.com" |
(3)將當前需要跟蹤的文件加到git倉庫(將文件添加到暫存區(qū)域),執(zhí)行g(shù)it add [filename];以添加hello.c到倉庫暫存區(qū)為例
elf@ubuntu:~/work/example/hello$ git add hello.c |
(4)提交版本
提交暫存區(qū)域的所有修改到本地倉庫(如果修改文件后未添加到暫存區(qū),將不會被提交),用git status指令(在分支內(nèi)操作時會做具體的講解)可以看到相關(guān)信息,提示需要提交。
執(zhí)行g(shù)it commit -m “xxx” 進行提交
elf@ubuntu:~/work/example/hello$ git commit -m "instial program" |
此時用git status查看,已經(jīng)沒有hello.c的提示了。
(5)查看當前提交信息
有過提交操作后,可以使用git log查看提交記錄信息
elf@ubuntu:~/work/example/hello$ git log |
完成以上操作,已經(jīng)構(gòu)建了一個本地資源庫,主要包括以下部分:
內(nèi)容 |
說明 |
Directory |
使用git管理的目錄,包含工作空間和git管理空間。 即:/home/elf//work/example/hello目錄 |
workspace |
工作區(qū),平時存放項目代碼的地方 |
.git |
存放git管理信息的目錄,git初始化時創(chuàng)建 |
staging |
暫存區(qū),用于存放臨時改動,事實上它只是一個文件,保存即將提交到文件列表信息 |
local repo |
本地版本庫,是安全存放數(shù)據(jù)的位置,含有提交的所有版本的數(shù)據(jù)。其中HEAD指向最新放入倉庫的版本。 |
Stash |
隱藏,是一個工作狀態(tài)保存棧,用于保存/恢復(fù)WorkSpace中的臨時狀態(tài) |