Git原理以及常用命令介紹

2021-06-19 04:55:37 字數 3336 閱讀 1778

1.被git管理(就是已跟蹤)的檔案只有三種狀態:

·已提交

·已修改    

·已暫存

2.安裝git

·編譯源**來安裝

·特定平台預編譯好的安裝包

3.git和其他的vcs版本控制系統的比較:

a)svn的倉庫repository概念和git的概念是一樣的。都是指在某個目錄裡面有乙個.svn或者.git資料夾。

b)git的clone和svn的checkout有著非常重要的區別。git的clone是把伺服器上的git倉庫的所有資料都取下來了(eg.任一的乙個檔案的更新歷史記錄)。而svn的checkout只是把svn伺服器上面的當前最新的資料給取下來,像某個檔案的更改記錄是不會拿下來的。

c)git裡面都是分支(branch),包括主幹分支,或者其他的分支。svn的分為主幹、分支、標籤(tag)三種。

d)svn中如果乙個檔案從v1到v2,svn在v2的時候記錄的是與v1的差異量,而git記錄的是一系列的快照。

4.得到乙個git倉庫的方法:

1.在已有的目錄下,使用git init。

2.通過git clone [url]的方式轉殖已有的倉庫

5.git支援多種資料傳輸協議。是通過git clone [url]後面的url來決定的。

url有如下三種形式:

a)本地協議,是本地和遠端共用乙個共享的檔案系統。例如轉殖的時候url可以為git clone /opt/git/project.git或者git clone file:///opt/git/project.git

b)git://  表示使用的git自己的協議

c)http(s):// 表示使用的是http協議

d)user@server:/path.git 表示使用的是ssh傳輸協議

remarks:ssh是其中唯一乙個支援讀和寫操作的網路協議。而http和git通常都是唯讀的。所以雖然二者大多數都可用,但執行寫操作的時候還是需要ssh。

6.git add命令是來告訴git開始對指定的檔案進行跟蹤。所以在工作目錄下面的所有檔案都不外乎兩種狀態:已跟蹤和未跟蹤。已跟蹤的檔案是指納入版本控制管理的檔案。

7.通過git管理的檔案的狀態變化週期圖

8.git常用的命令有:

a)git config—配置一些引數

b)git clone—從已有的倉庫中轉殖到本地來

c)git status—檢視檔案的狀態資訊

d)git add—有好多功能:1.命令git跟蹤某個新檔案 2.把已跟蹤的檔案放到暫存區 3.合併時把有衝突的檔案標記為已解決的狀態等

e)git diff—用來檢視某個檔案在不同狀態時的差異

f)git rm—移除檔案

g)git mv—移動檔案

h)git log—檢視提交歷史

i)git tag—對某一時間點上的版本打上標籤

9.可以在倉庫目錄中建立乙個名為.gitignore的檔案,通過編輯這個檔案來制定某些類別的檔案不納入git的管理,這樣這些檔案就不會出現在未跟蹤的檔案列表中。

10.git管理的檔案在流轉時,是有三個區域:

a)工作區域—某個檔案還沒有修改,或者已經修改但沒有放到暫存區中,那麼它就屬於這個區域

b)暫存區域—當把已經修改的檔案通過git add命令處理後,就會放到暫存區域中,當執行git commit命令時,暫存區域的檔案才會被提交

c)git本地倉庫—當通過git commit命令將暫存區域裡面的檔案提交後,就會放到這個區域

d)git遠端倉庫—當通過git push命令會將本地倉庫中修改推送到遠端倉庫

11.給git commit加上-a選項,git就會自動把所有已經跟蹤過的檔案暫存起來一併提交,從而可以略去要把已修改的檔案先將其新增到暫存區域中然後再提交的這個步驟

12. 遠端倉庫的使用方法:

a)通過git remote或者git remote -v來檢視當前的遠端庫

b)通過git remote add [remote-name] [url]來新增遠端倉庫,之後就可以用remote-name這個別名來指代url這個遠端倉庫了。

c)通過git fetch [remote-name]從遠端倉庫中抓取資料

d)通過git push [remote-name] [branch-name]將本地倉庫中的資料推送到遠端倉庫了。

e)通過git remote show [remote-name]來檢視某個遠端倉庫的詳細資訊。

f)通過git pull [remote-name]從遠端倉庫拉取更新到本地並且和本地倉庫合併

13.關於git pull和git fetch

git pull和git fetch都是從遠端倉庫中拉取更新到本地,但是兩者的區別在於,拉取更新後,會不會和並到本地倉庫中。git pull會合併,而git fetch不會。

(1)使用git fetch命令

git fetch origin master  #獲取遠端倉庫origin的master分支到本地

git diff master origin/master #進行本地倉庫master分支和遠端倉庫origin的master分支內容的對比

git merge origin/master #合併遠端倉庫origin的master到本地倉庫

(2)使用git pull命令

git pull origin master #從遠端倉庫origin的master分支獲取最新版本並merge到本地倉庫
備註,在實際開發中,盡量少用git pull,因為它會直接merge遠端倉庫的最新版本到本地倉庫,容易破壞本地倉庫的資訊。我們可以使用git fetch和git merge兩個命令來代替。

14.有關git分支的操作

a)git branch [string] 建立乙個名稱為string的分支

b)git checkout [string]從當前分支切換到名稱為string分支上去

15. 自結:在團隊協同開發某個專案時,採用git作為專案的vcs,那麼也需要建立乙個git遠端倉庫伺服器。簡單理解,這個所謂的git伺服器和本地的git是平等的。與svn中的伺服器的理解還是不一樣的。

16.有關github:

a)github提供倉庫託管服務,可以進行公共託管和私人託管服務的站點。所以可以再上面既可以儲存開源**,也可以儲存商業**。

b)github會向使用私有倉庫的使用者收取費用的商業公司。

remarks:github自己的理解就是,它就是乙個git,同時建立的乙個web站點,這個站點也能去管理git倉庫裡面的檔案。

《pro git》  scott chacon

Git介紹以及常用命令整理

分布式and集中式?來自於廖雪峰老師git介紹 git是分布式版本控制系統,集中式和分布式版本控制系統有什麼區別呢?先說集中式版本控制系統,版本庫是集中存放在 伺服器的,而幹活的時候,用的都是自己的電腦,所以要先從 伺服器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給 伺服器。伺服器就好...

git常用命令介紹

記錄下平時工作中所用到的git指令,以便以後進行查詢。1 git init 該命令可以建立乙個新的所要管理的git倉庫。2 git add 所改動的檔案 該命令可以將所改動的檔案新增到暫存區中,以便稍後進行提交。3 git add u 該命令可以將所有修改或者刪除的檔案新增到暫存區中,以便稍後進行提...

git 常用命令介紹

建立分支 git branch mybranch 切換分支 git checkout mybranch 建立並切換分支 git checkout b mybranch 更新master主線上的東西到該分支上 git rebase master 切換到master分支 git checkout mas...