Git 簡介與倉庫使用

Juno3550發表於2021-04-28

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 '說明資訊'

 

相關文章