1. 程式人生 > >《Git學習指南》學習筆記(一)

《Git學習指南》學習筆記(一)

第二章 入門

git的安裝

在Linux下,git的安裝很簡單。以我的系統Deepin/Ubuntu為例,只需在終端敲入sudo apt-get install git即可。其他Linux發行版可嘗試yum install git-core

第一個Git專案

初學時,建議使用一個新建立的目錄來進行測試。

建立版本庫

版本庫可以儲存專案及其歷時資料。我們可以用init來進行建立。

首先我們新建一個空目錄gittest,然後新建兩個文字檔案,如a.txt和b.txt,內容任意,然後使用init來建立版本庫:

觀察資料夾,可以發現已經多了一個名為.git的隱藏檔案:

這樣就說明你的版本庫已經建立成功。

首次提交

剛剛僅僅是把版本庫建立了,那我的兩個檔案如何新增到版本庫中去呢?此時需要使用兩個命令:addcommit,每次提交git都會為其生成一個雜湊值,這也是git對所有版本進行區分的一個鍵值。

如圖,已經成功提交了剛剛建立的a和b兩個檔案。

檢查狀態

git如何檢查版本庫檔案的狀態呢?

首先我們來把a.txt刪除,然後新建一個c.txt,最後檢視狀態:

status命令用於顯示自上次提交以來所有發生的修改。c.txt檔案被標為未跟蹤狀態,是因為它還沒有被add進版本庫。

使用diff命令可以顯示每個被修改的行,但在終端上看可能會顯得比較晦澀難懂:

因此還是建議使用圖形化工具如kdiff3

來檢視。這裡請大家自行查詢。

提交修改

我們修改b.txt檔案內容,希望將更改加入到版本庫中,對希望刪除的檔案使用rm命令,操作之後同樣也需要執行add命令,然後檢視狀態:

最後,別忘了commit

顯示歷史

既然我們已經修改過檔案了,那如何檢視歷史記錄呢?

log命令即可按照時間降序來顯示歷史記錄:

Git的協作功能

克隆版本庫

為了模擬團隊開發協作,我們另新建一個資料夾,代表第二位開發者在自己的PC上進行團隊開發:

此時,gittest2中已經有一份和gittest專案一模一樣的拷貝。

從另一版本庫中獲取修改

現在,我們假設開發者A對gittest專案進行了修改:

此時,開發者B也對專案進行了修改:

這樣,兩位開發者都在各自的PC上對專案進行了修改、提交。由於開發者B克隆的A的專案,因此B的專案中儲存了原版本庫的路徑。接下來,我們使用pull命令將開發者B克隆的專案進行同步,取回最新的提交:

可以發現,開發者B的專案中的b.txt檔案得到了同步,和A的一模一樣了。這個過程中,B使用pull從原版本庫中取回了新的修改,將它們與克隆體中的本地修改進行對比,然後在工作區中合併了兩邊的修改,建立了一次新的提交,這就叫合併(merge)

從任意版本庫中取回修改

在進行pull時,預設是從原版本庫中進行獲取。當指定引數時,便能實現從任意版本庫中獲取。

現在,我們將克隆體中的修改pull到原版本庫:

建立共享版本庫

push命令可以將提交傳送給其他版本庫。但是,push命令只適用於那些沒有開發者在上面開展具體工作的版本庫。最好是建立一個不帶工作區的版本庫,稱為裸版本庫(bare reppository)

裸版本庫就是充當開發者們傳遞提交的匯聚點,以便其他人可以從中拉回他們所做的修改。

用push命令上載修改

修改~/gittest/b.txt檔案,然後進行提交,最後push操作:

Pull命令:取回修改

現在,clone倉庫也想獲取相應的修改,執行以下命令即可: