集中式版本控制系統最大的毛病就是必須聯網才能工作,如果在區域網內還好,頻寬夠大,速度夠快,可如果在網際網路上,遇到網速慢的話,可能提交乙個10m的檔案就需要5分鐘,這還不得把人給憋死啊。
那分布式版本控制系統與集中式版本控制系統有何不同呢?首先,分布式版本控制系統根本沒有「**伺服器」,每個人的電腦上都是乙個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因為版本庫就在你自己的電腦上。既然每個人電腦上都有乙個完整的版本庫,那多個人如何協作呢?比方說你在自己電腦上改了檔案a,你的同事也在他的電腦上改了檔案a,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。和集中式版本控制系統相比,分布式版本控制系統的安全性要高很多,因為每個人電腦裡都有完整的版本庫,某乙個人的電腦壞掉了不要緊,隨便從其他人那裡複製乙個就可以了。而集中式版本控制系統的**伺服器要是出了問題,所有人都沒法幹活了。
在實際使用分布式版本控制系統的時候,其實很少在兩人之間的電腦上推送版本庫的修改,因為可能你們倆不在乙個區域網內,兩台電腦互相訪問不了,也可能今天你的同事病了,他的電腦壓根沒有開機。因此,分布式版本控制系統通常也有一台充當「**伺服器」的電腦,但這個伺服器的作用僅僅是用來方便「交換」大家的修改,沒有它大家也一樣幹活,只是交換修改不方便而已。
正常安裝好git之後可以$git --version 檢視 git的版本號是否安裝成功
安裝完成之後 進行最後一步的設定
$ git config --global user.name "your name"
$ git config --global user.email "[email protected]"
因為git是分布式版本控制系統,所以,每個機器都必須自報家門:你的名字和email位址。你也許會擔心,如果有人故意冒充別人怎麼辦?
這個不必擔心,首先我們相信大家都是善良無知的群眾,其次,真的有冒充的也是有辦法可查的。
小技巧$ git clear 清除一下當前的介面
檢視你設定的 使用者名稱和郵箱
$ git config user.name
$ git config user.email
返回上一級目錄cd ..ls可以看到當前目錄下的所有檔案 資料夾在前 文字在後
a) 找乙個合適的地方建立乙個空目錄
pwd 命令用於顯示當前目錄(在window下面 確保不能出現中文 否則就會出現呵呵的問題)
b) 通過git init 把這個目錄變成git可以git可以管理的倉庫
瞬間git就把倉庫建好了,而且告訴你是乙個空的倉庫(empty git repository),細心的讀者可以發現當前目錄下多了乙個.git
的目錄,這個目錄是git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄裡面的檔案,不然改亂了,就把git倉庫給破壞了。(如果你沒有看到 .git目錄 可以直接使用 ls -ah命令就能看見)
現在我們編寫乙個 first.txt檔案 (必須要放在git 倉庫下)
第一步 用git add告訴git 把檔案新增到倉庫:
$ git add readme.txt
第二步git commit告訴 git 把檔案提交到倉庫
$ git commit -m "裡面是本次提交的說明 可以輸入任意內容"
commit 可以一次提交很多檔案 你可以多次add不同的檔案。
接下來 如果我們要修改first.txt檔案 。 改完之後 可以$ git status 檢視結果。
上面的命令告訴我們 first.txt被修改了 但是沒有準備提交的修改。如果我們不清楚修改了readme.txt 使用$ git diff這個命令檢視修改。
git diff
顧名思義就是檢視difference,顯示的格式正是unix通用的diff格式,可以從上面的命令輸出看到,我們在第一行新增了乙個「distributed」單詞。知道了對readme.txt作了什麼修改後,再把它提交到倉庫就放心多了。
之後再執行 提交修改和提交新檔案是一樣的兩步,第一步是git add
:同樣沒有任何輸出。在執行第二步git commit
之前,我們再執行git status
看看當前倉庫的狀態:
git status 告訴我們 將要被提交包括first.txt 。最後在檢視。記住 時常檢視 git status的狀態。
如果在團隊協作的時候 你要檢視你自己或者別人提交的日誌可以直接 使用$ git log --author="shiyao" 就可以看到我執行的操作。
像這樣,你不斷對檔案進行修改,然後不斷提交修改到版本庫里,就好比玩rpg遊戲時,每通過一關就會自動把遊戲狀態存檔,如果某一關沒過去,你還可以選擇讀取前一關的狀態。有些時候,在打boss之前,你會手動存檔,以便萬一打boss失敗了,可以從最近的地方重新開始。git也是一樣,每當你覺得檔案修改到一定程度的時候,就可以「儲存乙個快照」,這個快照在git中被稱為commit
。一旦你把檔案改亂了,或者誤刪了檔案,還可以從最近的乙個commit
恢復,然後繼續工作,而不是把幾個月的工作成果全部丟失。
$ git log 命名顯示最近到最遠的提交日誌 我們可以看到所有提交。 如果閒東西太多 可以加上 --petty=oneline引數
接下來 怎麼會退到上一版本呢?
a)首先要讓git知道當前版本是哪個版本在git中 用head表示當前版本 上一版本就是head^ 上上一版本就是head^^ 如果100寫100個^ 寫不過來 所以寫成head~100
$ git reset --hard head^
檢視裡面的內容使用 $ cat first.txt;
此時我們可以使用$ git log 檢視版本庫的狀態。
在沒有關閉命令列的情況下 你還可以回到上面乙個版本。
學習git筆記(一)
git config global user.name your name git config global user.email email example.com 建立乙個版本庫非常簡單,首先,選擇乙個合適的地方,建立乙個空目錄 mkdir learngit cd learngit pwd u...
git 學習筆記一
本地修改後的內容叫工作區,add後的內容在暫存區,git commit m comit instruction 提交說明 git reset hard head 版本庫回退到上一版本 git reset hard commit id 回到commit對應的版本 如果不知道commitid git r...
Git 學習筆記 一
cvs 始祖,集中式1985年 svn 集大成者,集中式2000年 git geek主流,分布式2005年 github geek社群,託管 2008年 git是目前世界上最先進的分布式版本控制系統.svn 是集中式版本控制系統,版本庫是放在 伺服器的,而幹活的時候,用的都是自己的電腦,所以首先要從...