1. Git 簡介
2. 遠端倉庫的使用
3. 本地倉庫的使用
1. Git 簡介
Git 是分散式版本控制系統,同一個 Git 倉庫,可以分佈到不同的機器上。
其原理是首先找一臺電腦充當伺服器的角色,每天 24 小時開機,其他每個人都從這個“伺服器”倉庫克隆一份到自己的電腦上,並且各自把各自的提交推送到伺服器倉庫裡,也從伺服器倉庫中拉取別人的提交。可以自己搭建這臺伺服器,也可以使用 GitHub 網站。
Git 起源
Linus 在 1991 年建立了開源的 Linux,從此,Linux 系統不斷髮展,已經成為最大的伺服器系統軟體了。Linus 雖然建立了 Linux,但 Linux 的壯大是靠全世界熱心的志願者參與的,這麼多人在世界各地為 Linux 編寫程式碼,那 Linux 的程式碼是如何管理的呢?
事實是,在 2002 年以前,世界各地的志願者把原始碼檔案通過 diff 的方式發給 Linus,然後由 Linus 本人通過手工方式合併程式碼!你也許會想,為什麼 Linus 不把 Linux 程式碼放到版本控制系統裡呢?不是有 CVS 、 SVN 這些免費的版本控制系統嗎?因為 Linus 堅定地反對 CVS 和 SVN,這些集中式的版本控制系統不但速度慢,而且必須聯網才能使用。也有一些商用的版本控制系統,雖然比 CVS、SVN 好用,但那是付費的,和 Linux 的開源精神不符。
到了 2002 年,Linux 系統已經發展了十年了,程式碼庫之大讓 Linus 很難繼續通過手工方式管理了,社群的弟兄們也對這種方式表達了強烈不滿,於是 Linus 選擇了一個商業的版本控制系統 BitKeeper。BitKeeper 的東家 BitMover 公司出於人道主義精神,授權 Linux 社群免費使用這個版本控制系統。但安定團結的大好局面在 2005 年就被打破了,原因是 Linux 社群牛人聚集,不免沾染了一些梁山好漢的江湖習氣。開發 Samba 的 Andrew 試圖破解 BitKeeper 的協議(這麼幹的其實也不只他一個),被 BitMover 公司發現了(監控工作做得不錯!),於是 BitMover 公司怒了,要收回 Linux 社群的免費使用權。Linus 可以向 BitMover 公司道個歉,保證以後嚴格管教弟兄們。嗯,這是不可能的。
實際情況是這樣的: Linus 花了兩週時間自己用 C 寫了一個分散式版本控制系統,這就是 Git!一個月之內,Linux 系統的原始碼已經由 Git 管理了!牛是怎麼定義的呢?大家可以體會一下。Git 迅速成為最流行的分散式版本控制系統,尤其是 2008 年,GitHub 網站上線了,它為開源專案免費提供 Git 儲存,無數開源專案開始遷移至 GitHub,包括 jQuery,PHP,Ruby 等等。歷史就是這麼偶然,如果不是當年 BitMover 公司威脅 Linux 社群,可能現在我們就沒有免費而超級好用的 Git 了。
Git 安裝
Linux
sudo apt-get install git # ubuntu yum install git # centos
Windows
1)登入官網下載安裝包:官網 https://git-scm.com/download/win
2)下載完成後雙擊安裝,如下圖所示:
雙擊 exe 檔案,一路 next 即可。
3)配置環境變數:將 Git 的 bin 目錄 新增到環境變數。
執行如下命令驗證是否安裝配置成功:
git
2. 遠端倉庫的使用
1)建立 Github 賬號
本地 Git 倉庫和 GitHub 倉庫之間的傳輸是通過SSH加密的。
step 1:建立專案的 SSH Key
ssh-keygen -t rsa -C "youremail@example.com"
建立完成後,在使用者主目錄裡找到.ssh目錄,裡面有 id_rsa 和 id_rsa.pub 兩個檔案,這兩個就是 SSH Key 的祕鑰對,id_rsa 是私鑰,不能洩露出去,id_rsa.pub 是公鑰,可以放心地告訴任何人。
step 2:登入 GitHub 官網註冊或登入賬號,然後開啟“settings”的“SSH Keys”頁面,點“New SSH Key”,填上任意 Title,在 Key 文字框裡貼上 id_rsa.pub 檔案的內容後點選“Add Key”,可以看到已經新增的 Key。
2)建立遠端庫
登入 GitHub,在右上角找到“new repository”按鈕,建立一個新的倉庫。
3)從遠端倉庫克隆
將 GitHub 上的專案,克隆到本地一份(初始化本地倉庫):
git clone git@github.com:賬號名/專案名.git # SSH方式 # 也可以使用HTTPS方式克隆
4)與遠端庫互動
從遠端倉庫獲取到本地:
git pull
將本地倉庫提交到遠端倉庫:
git push origin master
提示:每次提交前,需要先獲取,解決衝突後再次提交。
3. 本地倉庫的使用
1)建立本地倉庫
建立空目錄:
mkdir test7
cd test7
目錄結構圖如下:
在目錄下建立本地倉庫:
git init
建立成功後,目錄結構如下圖:
版本庫就是一個目錄,這個目錄裡面的所有檔案都可以被 Git 管理起來,每個檔案的修改、刪除,Git 都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。
2)檔案管理
本地倉庫分為三部分:工作區,暫存區,倉庫區,其中暫存區、倉庫區是版本庫部分。
三個部分的操作及命令如下圖:
工作區與暫存區
使用 IDE 開啟目錄,建立專案,將檔案新增到暫存區:
git add 檔案1 檔案2 ...
git add 目錄
將暫時區的內容恢復至工作區:
git checkout -- 檔名
檢視暫存區的狀態:
git status
暫存區與倉庫區
將暫存區的記錄新增到倉庫區:
git commit -m '本次提交的說明資訊'
檢視倉庫區的歷史:
當前版本的歷史版本:git log 簡略版顯示:git log --pretty=oneline 歷史命令:git reflog
在 Git 中,用 HEAD 表示當前版本,也就是最新提交的版本,而上一個版本是 HEAD^,上上一個版本就是 HEAD^^,當然往上 100 個版本寫 100個^ 比較容易數不過來,所以可以寫成 HEAD~100。
對比工作區和倉庫區中某版本某檔案的不同:
git diff HEAD -- 檔名
回退歷史版本到暫存區:
git reset HEAD^或版本號
刪除檔案
依次執行如下命令:
rm 檔名 git rm 檔名 git commit -m '說明資訊'